Class: Dependabot::Elm::UpdateChecker::Elm19LatestVersionFinder
- Inherits:
-
Package::PackageLatestVersionFinder
- Object
- Package::PackageLatestVersionFinder
- Dependabot::Elm::UpdateChecker::Elm19LatestVersionFinder
- Extended by:
- T::Sig
- Defined in:
- lib/dependabot/elm/update_checker/latest_version_finder.rb
Overview
ELM19 version finder ######
Defined Under Namespace
Classes: UnrecoverableState
Instance Method Summary collapse
-
#initialize(dependency:, dependency_files:, ignored_versions: [], cooldown_options: nil) ⇒ Elm19LatestVersionFinder
constructor
A new instance of Elm19LatestVersionFinder.
- #latest_resolvable_version(unlock_requirement:) ⇒ Object
- #updated_dependencies_after_full_unlock ⇒ Object
Constructor Details
#initialize(dependency:, dependency_files:, ignored_versions: [], cooldown_options: nil) ⇒ Elm19LatestVersionFinder
Returns a new instance of Elm19LatestVersionFinder.
124 125 126 127 128 129 130 131 132 |
# File 'lib/dependabot/elm/update_checker/latest_version_finder.rb', line 124 def initialize(dependency:, dependency_files:, ignored_versions: [], cooldown_options: nil) @dependency = dependency @dependency_files = dependency_files @ignored_versions = ignored_versions @cooldown_options = @install_metadata = T.let(nil, T.nilable(T::Hash[String, Dependabot::Elm::Version])) @original_dependency_details ||= T.let(nil, T.nilable(T::Array[Dependabot::Dependency])) end |
Instance Method Details
#latest_resolvable_version(unlock_requirement:) ⇒ Object
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'lib/dependabot/elm/update_checker/latest_version_finder.rb', line 135 def latest_resolvable_version(unlock_requirement:) raise "Invalid unlock setting: #{unlock_requirement}" unless %i(none own all).include?(unlock_requirement) # Elm has no lockfile, so we will never create an update PR if # unlock requirements are `none`. Just return the current version. return current_version if unlock_requirement == :none current = current_version # Run the solver first so errors (unsupported deps, invalid layouts) propagate resolved = fetch_latest_resolvable_version(unlock_requirement) return current unless resolved # If there is no current version (e.g., only a range in elm.json), treat any # successfully resolved version as the candidate update. return cap_at_max_allowed_version(resolved) unless current return current unless resolved > current # Cap the solver result at the highest non-ignored, non-cooldown version cap_at_max_allowed_version(resolved) end |
#updated_dependencies_after_full_unlock ⇒ Object
156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 |
# File 'lib/dependabot/elm/update_checker/latest_version_finder.rb', line 156 def updated_dependencies_after_full_unlock changed_deps = original_dependency_details.filter_map do |original_dep| new_version = changed_deps.fetch(original_dep.name, nil) next unless new_version old_reqs = original_dep.requirements.map do |req| requirement_class.new(req[:requirement]) end next if old_reqs.all? { |req| req.satisfied_by?(new_version) } new_requirements = RequirementsUpdater.new( requirements: original_dep.requirements, latest_resolvable_version: new_version.to_s ).updated_requirements Dependency.new( name: original_dep.name, version: new_version.to_s, requirements: new_requirements, previous_version: original_dep.version, previous_requirements: original_dep.requirements, package_manager: original_dep.package_manager ) end end |