Class: Dependabot::Julia::UpdateChecker

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

Instance Method Summary collapse

Constructor Details

#initialize(dependency:, dependency_files:, credentials:, repo_contents_path: nil, ignored_versions: [], raise_on_ignored: false, security_advisories: [], requirements_update_strategy: nil, dependency_group: nil, update_cooldown: nil, options: {}) ⇒ UpdateChecker

Returns a new instance of UpdateChecker.



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/dependabot/julia/update_checker.rb', line 33

def initialize(
  dependency:,
  dependency_files:,
  credentials:,
  repo_contents_path: nil,
  ignored_versions: [],
  raise_on_ignored: false,
  security_advisories: [],
  requirements_update_strategy: nil,
  dependency_group: nil,
  update_cooldown: nil,
  options: {}
)
  super
  @custom_registries = T.let(nil, T.nilable(T::Array[T::Hash[Symbol, T.untyped]]))
end

Instance Method Details

#custom_registriesObject



56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/dependabot/julia/update_checker.rb', line 56

def custom_registries
  return @custom_registries if @custom_registries

  registries = T.cast(options.dig(:registries, :julia), T.nilable(T::Array[T.untyped])) || []
  # Convert string keys to symbols if needed
  @custom_registries = registries.map do |registry|
    if registry.is_a?(Hash)
      registry.transform_keys(&:to_sym)
    else
      T.cast(registry, T::Hash[Symbol, T.untyped])
    end
  end
end

#latest_resolvable_versionObject



71
72
73
74
75
# File 'lib/dependabot/julia/update_checker.rb', line 71

def latest_resolvable_version
  # For Julia, the latest version is generally resolvable since
  # the manifest file locks exact versions, so we use latest_version
  @latest_resolvable_version ||= T.let(latest_version, T.nilable(Gem::Version))
end

#latest_resolvable_version_with_no_unlockObject



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/dependabot/julia/update_checker.rb', line 78

def latest_resolvable_version_with_no_unlock
  # Return latest version that satisfies current requirement constraints
  return nil unless latest_version

  current_requirement = T.cast(dependency.requirements.first&.fetch(:requirement, nil), T.nilable(String))

  if current_requirement.nil? || current_requirement == "*"
    return Dependabot::Julia::Version.new(latest_version.to_s)
  end

  req = requirement_class.new(current_requirement)
  return unless T.cast(req.satisfied_by?(latest_version), T::Boolean)

  Dependabot::Julia::Version.new(latest_version.to_s)
end

#latest_versionObject



51
52
53
# File 'lib/dependabot/julia/update_checker.rb', line 51

def latest_version
  @latest_version ||= T.let(latest_version_finder.latest_version, T.nilable(Gem::Version))
end

#updated_requirementsObject



95
96
97
98
99
100
101
# File 'lib/dependabot/julia/update_checker.rb', line 95

def updated_requirements
  Dependabot::Julia::RequirementsUpdater.new(
    requirements: dependency.requirements,
    target_version: latest_resolvable_version&.to_s,
    update_strategy: requirements_update_strategy&.to_s&.to_sym
  ).updated_requirements
end