Class: Dependabot::Nuget::UpdateChecker::RequirementsUpdater

Inherits:
Object
  • Object
show all
Defined in:
lib/dependabot/nuget/update_checker/requirements_updater.rb

Constant Summary collapse

VERSION_REGEX =
/[0-9a-zA-Z]+(?:\.[a-zA-Z0-9\-]+)*/.freeze

Instance Method Summary collapse

Constructor Details

#initialize(requirements:, latest_version:, source_details:) ⇒ RequirementsUpdater

Returns a new instance of RequirementsUpdater.



17
18
19
20
21
22
23
# File 'lib/dependabot/nuget/update_checker/requirements_updater.rb', line 17

def initialize(requirements:, latest_version:, source_details:)
  @requirements = requirements
  @source_details = source_details
  return unless latest_version

  @latest_version = version_class.new(latest_version)
end

Instance Method Details

#updated_requirementsObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/dependabot/nuget/update_checker/requirements_updater.rb', line 25

def updated_requirements
  return requirements unless latest_version

  # Note: Order is important here. The FileUpdater needs the updated
  # requirement at index `i` to correspond to the previous requirement
  # at the same index.
  requirements.map do |req|
    next req if req.fetch(:requirement).nil?
    next req if req.fetch(:requirement).include?(",")

    new_req =
      if req.fetch(:requirement).include?("*")
        update_wildcard_requirement(req.fetch(:requirement))
      else
        # Since range requirements are excluded by the line above we
        # can just do a `gsub` on anything that looks like a version
        req[:requirement].gsub(VERSION_REGEX, latest_version.to_s)
      end

    next req if new_req == req.fetch(:requirement)

    req.merge(requirement: new_req, source: updated_source)
  end
end