class Dependabot::Hex::FileUpdater::MixfileRequirementUpdater

Attributes

dependency_name[R]
mixfile_content[R]
previous_requirement[R]
updated_requirement[R]

Public Class Methods

new(dependency_name:, mixfile_content:, previous_requirement:, updated_requirement:, insert_if_bare: false) click to toggle source
# File lib/dependabot/hex/file_updater/mixfile_requirement_updater.rb, line 10
def initialize(dependency_name:, mixfile_content:,
               previous_requirement:, updated_requirement:,
               insert_if_bare: false)
  @dependency_name      = dependency_name
  @mixfile_content      = mixfile_content
  @previous_requirement = previous_requirement
  @updated_requirement  = updated_requirement
  @insert_if_bare       = insert_if_bare
end

Public Instance Methods

updated_content() click to toggle source
# File lib/dependabot/hex/file_updater/mixfile_requirement_updater.rb, line 20
def updated_content
  updated_content = update_requirement(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_requirement_updater.rb, line 62
def content_should_change?
  return false if previous_requirement == updated_requirement

  previous_requirement || insert_if_bare?
end
insert_if_bare?() click to toggle source
# File lib/dependabot/hex/file_updater/mixfile_requirement_updater.rb, line 33
def insert_if_bare?
  !@insert_if_bare.nil?
end
update_requirement(content) click to toggle source
# File lib/dependabot/hex/file_updater/mixfile_requirement_updater.rb, line 37
def update_requirement(content)
  return content if previous_requirement.nil? && !insert_if_bare?

  requirement_line_regex =
    if previous_requirement
      /
        :#{Regexp.escape(dependency_name)}\s*,.*
        #{Regexp.escape(previous_requirement)}
      /x
    else
      /:#{Regexp.escape(dependency_name)}(,|\s|\})/
    end

  content.gsub(requirement_line_regex) do |requirement_line|
    if previous_requirement
      requirement_line.gsub(previous_requirement, updated_requirement)
    else
      requirement_line.gsub(
        ":#{dependency_name}",
        ":#{dependency_name}, \"#{updated_requirement}\""
      )
    end
  end
end