class Dependabot::Hex::FileUpdater::MixfileGitPinUpdater

Attributes

dependency_name[R]
mixfile_content[R]
previous_pin[R]
updated_pin[R]

Public Class Methods

new(dependency_name:, mixfile_content:, previous_pin:, updated_pin:) click to toggle source
# File lib/dependabot/hex/file_updater/mixfile_git_pin_updater.rb, line 10
def initialize(dependency_name:, mixfile_content:,
               previous_pin:, updated_pin:)
  @dependency_name = dependency_name
  @mixfile_content = mixfile_content
  @previous_pin    = previous_pin
  @updated_pin     = updated_pin
end

Public Instance Methods

updated_content() click to toggle source
# File lib/dependabot/hex/file_updater/mixfile_git_pin_updater.rb, line 18
def updated_content
  updated_content = update_pin(mixfile_content)

  raise "Expected content to change!" if content_should_change? && mixfile_content == updated_content

  updated_content
end

Private Instance Methods

content_should_change?() click to toggle source
# File lib/dependabot/hex/file_updater/mixfile_git_pin_updater.rb, line 43
def content_should_change?
  previous_pin == updated_pin
end
update_pin(content) click to toggle source
# File lib/dependabot/hex/file_updater/mixfile_git_pin_updater.rb, line 31
def update_pin(content)
  requirement_line_regex =
    /
      \{\s*:#{Regexp.escape(dependency_name)},[^\}]*
      (?:ref|tag):\s+["']#{Regexp.escape(previous_pin)}["']
    /mx

  content.gsub(requirement_line_regex) do |requirement_line|
    requirement_line.gsub(previous_pin, updated_pin)
  end
end