class Dependabot::Gradle::UpdateChecker::MultiDependencyUpdater

Attributes

credentials[R]
dependency[R]
dependency_files[R]
ignored_versions[R]
source_url[R]
target_version[R]

Public Class Methods

new(dependency:, dependency_files:, credentials:, target_version_details:, ignored_versions:, raise_on_ignored: false) click to toggle source
# File lib/dependabot/gradle/update_checker/multi_dependency_updater.rb, line 13
def initialize(dependency:, dependency_files:, credentials:,
               target_version_details:, ignored_versions:,
               raise_on_ignored: false)
  @dependency       = dependency
  @dependency_files = dependency_files
  @credentials      = credentials
  @target_version   = target_version_details&.fetch(:version)
  @source_url       = target_version_details&.fetch(:source_url)
  @ignored_versions = ignored_versions
  @raise_on_ignored = raise_on_ignored
end

Public Instance Methods

update_possible?() click to toggle source
# File lib/dependabot/gradle/update_checker/multi_dependency_updater.rb, line 25
def update_possible?
  return false unless target_version

  @update_possible ||=
    dependencies_to_update.all? do |dep|
      VersionFinder.new(
        dependency: dep,
        dependency_files: dependency_files,
        credentials: credentials,
        ignored_versions: ignored_versions,
        raise_on_ignored: @raise_on_ignored,
        security_advisories: []
      ).versions.
        map { |v| v.fetch(:version) }.
        include?(target_version)
    end
end
updated_dependencies() click to toggle source
# File lib/dependabot/gradle/update_checker/multi_dependency_updater.rb, line 43
def updated_dependencies
  raise "Update not possible!" unless update_possible?

  @updated_dependencies ||=
    dependencies_to_update.map do |dep|
      Dependency.new(
        name: dep.name,
        version: target_version.to_s,
        requirements: updated_requirements(dep),
        previous_version: dep.version,
        previous_requirements: dep.requirements,
        package_manager: dep.package_manager
      )
    end
end

Private Instance Methods

dependencies_to_update() click to toggle source
# File lib/dependabot/gradle/update_checker/multi_dependency_updater.rb, line 64
def dependencies_to_update
  @dependencies_to_update ||=
    Gradle::FileParser.new(
      dependency_files: dependency_files,
      source: nil
    ).parse.select do |dep|
      dep.requirements.any? do |r|
        tmp_p_name = r.dig(:metadata, :property_name)
        tmp_dep_set = r.dig(:metadata, :dependency_set)
        next true if property_name && tmp_p_name == property_name

        dependency_set && tmp_dep_set == dependency_set
      end
    end
end
dependency_set() click to toggle source
# File lib/dependabot/gradle/update_checker/multi_dependency_updater.rb, line 86
def dependency_set
  @dependency_set ||= dependency.requirements.
                      find { |r| r.dig(:metadata, :dependency_set) }&.
                      dig(:metadata, :dependency_set)
end
property_name() click to toggle source
# File lib/dependabot/gradle/update_checker/multi_dependency_updater.rb, line 80
def property_name
  @property_name ||= dependency.requirements.
                     find { |r| r.dig(:metadata, :property_name) }&.
                     dig(:metadata, :property_name)
end
updated_requirements(dep) click to toggle source
# File lib/dependabot/gradle/update_checker/multi_dependency_updater.rb, line 92
def updated_requirements(dep)
  @updated_requirements ||= {}
  @updated_requirements[dep.name] ||=
    RequirementsUpdater.new(
      requirements: dep.requirements,
      latest_version: target_version.to_s,
      source_url: source_url,
      properties_to_update: [property_name].compact
    ).updated_requirements
end