class Dependabot::Elm::UpdateChecker::RequirementsUpdater

Constants

RANGE_REQUIREMENT_REGEX
SINGLE_VERSION_REGEX

Attributes

latest_resolvable_version[R]
requirements[R]

Public Class Methods

new(requirements:, latest_resolvable_version:) click to toggle source
# File lib/dependabot/elm/update_checker/requirements_updater.rb, line 15
def initialize(requirements:, latest_resolvable_version:)
  @requirements = requirements

  return unless latest_resolvable_version
  return unless version_class.correct?(latest_resolvable_version)

  @latest_resolvable_version =
    version_class.new(latest_resolvable_version)
end

Public Instance Methods

updated_requirements() click to toggle source
# File lib/dependabot/elm/update_checker/requirements_updater.rb, line 25
def updated_requirements
  return requirements unless latest_resolvable_version

  requirements.map do |req|
    updated_req_string = update_requirement(
      req[:requirement],
      latest_resolvable_version
    )

    req.merge(requirement: updated_req_string)
  end
end

Private Instance Methods

require_exactly(version) click to toggle source
# File lib/dependabot/elm/update_checker/requirements_updater.rb, line 59
def require_exactly(version)
  "#{version} <= v <= #{version}"
end
require_range(minimum, version) click to toggle source
# File lib/dependabot/elm/update_checker/requirements_updater.rb, line 54
def require_range(minimum, version)
  major, _minor, _patch = version.to_s.split(".").map(&:to_i)
  "#{minimum} <= v < #{major + 1}.0.0"
end
requirement_class() click to toggle source
# File lib/dependabot/elm/update_checker/requirements_updater.rb, line 67
def requirement_class
  Elm::Requirement
end
update_requirement(old_req, new_version) click to toggle source
# File lib/dependabot/elm/update_checker/requirements_updater.rb, line 42
def update_requirement(old_req, new_version)
  if requirement_class.new(old_req).satisfied_by?(new_version)
    old_req
  elsif (match = RANGE_REQUIREMENT_REGEX.match(old_req))
    require_range(match[1], new_version)
  elsif SINGLE_VERSION_REGEX.match?(old_req)
    new_version.to_s
  else
    require_exactly(new_version)
  end
end
version_class() click to toggle source
# File lib/dependabot/elm/update_checker/requirements_updater.rb, line 63
def version_class
  Elm::Version
end