class Dependabot::Elm::UpdateChecker
Public Instance Methods
can_update?(requirements_to_unlock:)
click to toggle source
Overwrite the base class to allow multi-dependency update PRs for dependencies for which we don't have a version.
# File lib/dependabot/elm/update_checker.rb, line 21 def can_update?(requirements_to_unlock:) if dependency.appears_in_lockfile? version_can_update?(requirements_to_unlock: requirements_to_unlock) elsif requirements_to_unlock == :none false elsif requirements_to_unlock == :own requirements_can_update? elsif requirements_to_unlock == :all updated_dependencies_after_full_unlock.any? end end
latest_resolvable_version()
click to toggle source
# File lib/dependabot/elm/update_checker.rb, line 33 def latest_resolvable_version @latest_resolvable_version ||= version_resolver. latest_resolvable_version(unlock_requirement: :own) end
latest_resolvable_version_with_no_unlock()
click to toggle source
# File lib/dependabot/elm/update_checker.rb, line 39 def latest_resolvable_version_with_no_unlock # Irrelevant, since Elm has a single dependency file (well, there's # also `exact-dependencies.json`, but it's not recommended that that # is committed). nil end
latest_version()
click to toggle source
# File lib/dependabot/elm/update_checker.rb, line 15 def latest_version @latest_version ||= candidate_versions.max end
updated_requirements()
click to toggle source
# File lib/dependabot/elm/update_checker.rb, line 46 def updated_requirements RequirementsUpdater.new( requirements: dependency.requirements, latest_resolvable_version: latest_resolvable_version ).updated_requirements end
Private Instance Methods
all_versions()
click to toggle source
# File lib/dependabot/elm/update_checker.rb, line 96 def all_versions return @all_versions if @version_lookup_attempted @version_lookup_attempted = true response = Excon.get( "https://package.elm-lang.org/packages/#{dependency.name}/"\ "releases.json", idempotent: true, **Dependabot::SharedHelpers.excon_defaults ) return @all_versions = [] unless response.status == 200 @all_versions = JSON.parse(response.body). keys. map { |v| version_class.new(v) }. sort end
candidate_versions()
click to toggle source
# File lib/dependabot/elm/update_checker.rb, line 78 def candidate_versions filtered = all_versions. reject { |v| ignore_requirements.any? { |r| r.satisfied_by?(v) } } if @raise_on_ignored && filter_lower_versions(filtered).empty? && filter_lower_versions(all_versions).any? raise AllVersionsIgnored end filtered end
filter_lower_versions(versions_array)
click to toggle source
# File lib/dependabot/elm/update_checker.rb, line 89 def filter_lower_versions(versions_array) return versions_array unless dependency.version && version_class.correct?(dependency.version) versions_array. select { |version| version > version_class.new(dependency.version) } end
latest_version_resolvable_with_full_unlock?()
click to toggle source
# File lib/dependabot/elm/update_checker.rb, line 73 def latest_version_resolvable_with_full_unlock? latest_version == version_resolver. latest_resolvable_version(unlock_requirement: :all) end
requirements_up_to_date?()
click to toggle source
Overwrite the base class's requirements_up_to_date? method to instead check whether the latest version is allowed
# File lib/dependabot/elm/update_checker.rb, line 119 def requirements_up_to_date? return false unless latest_version dependency.requirements. map { |r| r.fetch(:requirement) }. map { |r| requirement_class.new(r) }. all? { |r| r.satisfied_by?(latest_version) } end
updated_dependencies_after_full_unlock()
click to toggle source
# File lib/dependabot/elm/update_checker.rb, line 69 def updated_dependencies_after_full_unlock version_resolver.updated_dependencies_after_full_unlock end
version_resolver()
click to toggle source
# File lib/dependabot/elm/update_checker.rb, line 55 def version_resolver @version_resolver ||= begin unless dependency.requirements.any? { |r| r.fetch(:file) == "elm.json" } raise Dependabot::DependencyFileNotResolvable, "No elm.json found" end Elm19VersionResolver.new( dependency: dependency, dependency_files: dependency_files ) end end