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

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

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of RequirementsUpdater.



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

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



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

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
        # replace anything that looks like a version with the new
        # version
        req[:requirement].sub(
          /#{Nuget::Version::VERSION_PATTERN}/,
          latest_version.to_s
        )
      end

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

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