Class: Dependabot::Conda::UpdateChecker

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

Defined Under Namespace

Classes: LatestVersionFinder, RequirementTranslator, RequirementsUpdater

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.



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

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
  @latest_version = T.let(nil, T.nilable(T.any(String, Dependabot::Version)))
  @lowest_resolvable_security_fix_version = T.let(nil, T.nilable(Dependabot::Version))
  @lowest_resolvable_security_fix_version_fetched = T.let(false, T::Boolean)
end

Instance Method Details

#latest_resolvable_versionObject



64
65
66
# File 'lib/dependabot/conda/update_checker.rb', line 64

def latest_resolvable_version
  latest_version
end

#latest_resolvable_version_with_no_unlockObject



59
60
61
# File 'lib/dependabot/conda/update_checker.rb', line 59

def latest_resolvable_version_with_no_unlock
  latest_version
end

#latest_versionObject



52
53
54
55
56
# File 'lib/dependabot/conda/update_checker.rb', line 52

def latest_version
  return nil if dependency.requirements.all? { |req| req[:requirement].nil? || req[:requirement] == "*" }

  @latest_version ||= fetch_latest_version
end

#lowest_resolvable_security_fix_versionObject



87
88
89
90
91
92
93
94
95
# File 'lib/dependabot/conda/update_checker.rb', line 87

def lowest_resolvable_security_fix_version
  raise "Dependency not vulnerable!" unless vulnerable?

  return @lowest_resolvable_security_fix_version if @lowest_resolvable_security_fix_version_fetched

  @lowest_resolvable_security_fix_version = fetch_lowest_resolvable_security_fix_version
  @lowest_resolvable_security_fix_version_fetched = true
  @lowest_resolvable_security_fix_version
end

#lowest_security_fix_versionObject



82
83
84
# File 'lib/dependabot/conda/update_checker.rb', line 82

def lowest_security_fix_version
  latest_version_finder.lowest_security_fix_version
end

#requirements_unlocked_or_can_be?Boolean

Returns:

  • (Boolean)


77
78
79
# File 'lib/dependabot/conda/update_checker.rb', line 77

def requirements_unlocked_or_can_be?
  true
end

#requirements_update_strategyObject



107
108
109
110
111
# File 'lib/dependabot/conda/update_checker.rb', line 107

def requirements_update_strategy
  return @requirements_update_strategy if @requirements_update_strategy

  RequirementsUpdateStrategy::BumpVersions
end

#up_to_date?Boolean

Returns:

  • (Boolean)


69
70
71
72
73
74
# File 'lib/dependabot/conda/update_checker.rb', line 69

def up_to_date?
  return true if latest_version.nil?
  return false if dependency.version.nil?

  T.must(latest_version) <= Dependabot::Conda::Version.new(dependency.version)
end

#updated_requirementsObject



98
99
100
101
102
103
104
# File 'lib/dependabot/conda/update_checker.rb', line 98

def updated_requirements
  RequirementsUpdater.new(
    requirements: dependency.requirements,
    update_strategy: requirements_update_strategy,
    latest_resolvable_version: preferred_resolvable_version&.to_s
  ).updated_requirements
end