class Dependabot::Gradle::FileUpdater::DependencySetUpdater

Attributes

dependency_files[R]

Public Class Methods

new(dependency_files:) click to toggle source
# File lib/dependabot/gradle/file_updater/dependency_set_updater.rb, line 10
def initialize(dependency_files:)
  @dependency_files = dependency_files
end

Public Instance Methods

update_files_for_dep_set_change(dependency_set:, buildfile:, previous_requirement:, updated_requirement:) click to toggle source
# File lib/dependabot/gradle/file_updater/dependency_set_updater.rb, line 14
def update_files_for_dep_set_change(dependency_set:,
                                    buildfile:,
                                    previous_requirement:,
                                    updated_requirement:)
  declaration_string =
    original_declaration_string(dependency_set, buildfile)

  return dependency_files unless declaration_string

  updated_content = buildfile.content.sub(
    declaration_string,
    declaration_string.sub(
      previous_requirement,
      updated_requirement
    )
  )

  updated_files = dependency_files.dup
  updated_files[updated_files.index(buildfile)] =
    update_file(file: buildfile, content: updated_content)

  updated_files
end

Private Instance Methods

original_declaration_string(dependency_set, buildfile) click to toggle source
# File lib/dependabot/gradle/file_updater/dependency_set_updater.rb, line 42
def original_declaration_string(dependency_set, buildfile)
  regex = Gradle::FileParser::DEPENDENCY_SET_DECLARATION_REGEX
  dependency_sets = []
  buildfile.content.scan(regex) do
    dependency_sets << Regexp.last_match.to_s
  end

  dependency_sets.find do |mtch|
    next unless mtch.include?(dependency_set[:group])

    mtch.include?(dependency_set[:version])
  end
end
update_file(file:, content:) click to toggle source
# File lib/dependabot/gradle/file_updater/dependency_set_updater.rb, line 56
def update_file(file:, content:)
  updated_file = file.dup
  updated_file.content = content
  updated_file
end