Class: Dependabot::Elm::UpdateChecker::Elm18VersionResolver
- Inherits:
-
Object
- Object
- Dependabot::Elm::UpdateChecker::Elm18VersionResolver
- Defined in:
- lib/dependabot/elm/update_checker/elm_18_version_resolver.rb
Defined Under Namespace
Classes: UnrecoverableState
Instance Method Summary collapse
-
#initialize(dependency:, dependency_files:, candidate_versions:) ⇒ Elm18VersionResolver
constructor
A new instance of Elm18VersionResolver.
- #latest_resolvable_version(unlock_requirement:) ⇒ Object
- #updated_dependencies_after_full_unlock ⇒ Object
Constructor Details
#initialize(dependency:, dependency_files:, candidate_versions:) ⇒ Elm18VersionResolver
Returns a new instance of Elm18VersionResolver.
18 19 20 21 22 |
# File 'lib/dependabot/elm/update_checker/elm_18_version_resolver.rb', line 18 def initialize(dependency:, dependency_files:, candidate_versions:) @dependency = dependency @dependency_files = dependency_files @candidate_versions = candidate_versions end |
Instance Method Details
#latest_resolvable_version(unlock_requirement:) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/dependabot/elm/update_checker/elm_18_version_resolver.rb', line 24 def latest_resolvable_version(unlock_requirement:) unless %i(none own all).include?(unlock_requirement) raise "Invalid unlock setting: #{unlock_requirement}" end # 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 # Otherwise, we gotta check a few conditions to see if bumping # wouldn't also bump other deps in elm-package.json candidate_versions.sort.reverse_each do |version| return version if can_update?(version, unlock_requirement) end # Fall back to returning the dependency's current version, which is # presumed to be resolvable current_version end |
#updated_dependencies_after_full_unlock ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/dependabot/elm/update_checker/elm_18_version_resolver.rb', line 44 def updated_dependencies_after_full_unlock version = latest_resolvable_version(unlock_requirement: :all) deps_after_install = (target_version: version) original_dependency_details.map do |original_dep| new_version = deps_after_install.fetch(original_dep.name) 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.compact end |