Class: Dependabot::Sbt::UpdateChecker

Inherits:
UpdateCheckers::Base
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/dependabot/sbt/update_checker.rb,
lib/dependabot/sbt/update_checker/version_finder.rb,
lib/dependabot/sbt/update_checker/requirements_updater.rb

Defined Under Namespace

Classes: RequirementsUpdater, VersionFinder

Instance Method Summary collapse

Instance Method Details

#latest_resolvable_versionObject



24
25
26
27
28
29
30
# File 'lib/dependabot/sbt/update_checker.rb', line 24

def latest_resolvable_version
  # SBT has no transitive dependency resolution constraints in manifest files.
  # Return nil if version comes from a multi-dependency property (needs full unlock).
  return nil if version_comes_from_multi_dependency_property?

  latest_version
end

#latest_resolvable_version_with_no_unlockObject



45
46
47
48
# File 'lib/dependabot/sbt/update_checker.rb', line 45

def latest_resolvable_version_with_no_unlock
  # SBT uses exact versions in build files, so no constraint resolution needed.
  nil
end

#latest_versionObject



19
20
21
# File 'lib/dependabot/sbt/update_checker.rb', line 19

def latest_version
  latest_version_details&.fetch(:version)
end

#lowest_resolvable_security_fix_versionObject



38
39
40
41
42
# File 'lib/dependabot/sbt/update_checker.rb', line 38

def lowest_resolvable_security_fix_version
  return nil if version_comes_from_multi_dependency_property?

  lowest_security_fix_version
end

#lowest_security_fix_versionObject



33
34
35
# File 'lib/dependabot/sbt/update_checker.rb', line 33

def lowest_security_fix_version
  lowest_security_fix_version_details&.fetch(:version)
end

#requirements_unlocked_or_can_be?Boolean

Returns:

  • (Boolean)


65
66
67
68
# File 'lib/dependabot/sbt/update_checker.rb', line 65

def requirements_unlocked_or_can_be?
  # If any requirement uses a val we couldn't resolve, we can't update
  !dependency.version&.include?("${")
end

#updated_requirementsObject



51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/dependabot/sbt/update_checker.rb', line 51

def updated_requirements
  property_names =
    declarations_using_a_property
    .filter_map { |req| req.dig(:metadata, :property_name) }

  RequirementsUpdater.new(
    requirements: dependency.requirements,
    latest_version: preferred_resolvable_version&.to_s,
    source_url: preferred_version_details&.fetch(:source_url),
    properties_to_update: property_names
  ).updated_requirements
end