class Dependabot::Maven::UpdateChecker::PropertyUpdater
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:)
click to toggle source
# File lib/dependabot/maven/update_checker/property_updater.rb, line 14 def initialize(dependency:, dependency_files:, credentials:, target_version_details:, ignored_versions:) @dependency = dependency @dependency_files = dependency_files @credentials = credentials @ignored_versions = ignored_versions @target_version = target_version_details&.fetch(:version) @source_url = target_version_details&.fetch(:source_url) end
Public Instance Methods
update_possible?()
click to toggle source
# File lib/dependabot/maven/update_checker/property_updater.rb, line 24 def update_possible? return false unless target_version @update_possible ||= dependencies_using_property.all? do |dep| next false if includes_property_reference?(updated_version(dep)) versions = VersionFinder.new( dependency: dep, dependency_files: dependency_files, credentials: credentials, ignored_versions: ignored_versions, security_advisories: [] ).versions.map { |v| v.fetch(:version) } versions.include?(updated_version(dep)) || versions.none? end end
updated_dependencies()
click to toggle source
# File lib/dependabot/maven/update_checker/property_updater.rb, line 43 def updated_dependencies raise "Update not possible!" unless update_possible? @updated_dependencies ||= dependencies_using_property.map do |dep| Dependency.new( name: dep.name, version: updated_version(dep), requirements: updated_requirements(dep), previous_version: dep.version, previous_requirements: dep.requirements, package_manager: dep.package_manager ) end end
Private Instance Methods
dependencies_using_property()
click to toggle source
# File lib/dependabot/maven/update_checker/property_updater.rb, line 64 def dependencies_using_property @dependencies_using_property ||= Maven::FileParser.new( dependency_files: dependency_files, source: nil ).parse.select do |dep| dep.requirements.any? do |r| next unless r.dig(:metadata, :property_name) == property_name r.dig(:metadata, :property_source) == property_source end end end
includes_property_reference?(string)
click to toggle source
# File lib/dependabot/maven/update_checker/property_updater.rb, line 95 def includes_property_reference?(string) string.match?(Maven::FileParser::PROPERTY_REGEX) end
pom()
click to toggle source
# File lib/dependabot/maven/update_checker/property_updater.rb, line 111 def pom dependency_files.find { |f| f.name == "pom.xml" } end
property_name()
click to toggle source
# File lib/dependabot/maven/update_checker/property_updater.rb, line 78 def property_name @property_name ||= dependency.requirements. find { |r| r.dig(:metadata, :property_name) }&. dig(:metadata, :property_name) raise "No requirement with a property name!" unless @property_name @property_name end
property_source()
click to toggle source
# File lib/dependabot/maven/update_checker/property_updater.rb, line 88 def property_source @property_source ||= dependency.requirements. find { |r| r.dig(:metadata, :property_name) == property_name }&. dig(:metadata, :property_source) end
updated_requirements(dep)
click to toggle source
# File lib/dependabot/maven/update_checker/property_updater.rb, line 119 def updated_requirements(dep) @updated_requirements ||= {} @updated_requirements[dep.name] ||= RequirementsUpdater.new( requirements: dep.requirements, latest_version: updated_version(dep), source_url: source_url, properties_to_update: [property_name] ).updated_requirements end
updated_version(dep)
click to toggle source
# File lib/dependabot/maven/update_checker/property_updater.rb, line 115 def updated_version(dep) version_string(dep).gsub("${#{property_name}}", target_version.to_s) end
version_string(dep)
click to toggle source
# File lib/dependabot/maven/update_checker/property_updater.rb, line 99 def version_string(dep) declaring_requirement = dep.requirements. find { |r| r.dig(:metadata, :property_name) == property_name } Maven::FileUpdater::DeclarationFinder.new( dependency: dep, declaring_requirement: declaring_requirement, dependency_files: dependency_files ).declaration_nodes.first.at_css("version")&.content end