class Dependabot::Hex::FileUpdater::MixfileUpdater
Attributes
dependencies[R]
mixfile[R]
Public Class Methods
new(mixfile:, dependencies:)
click to toggle source
# File lib/dependabot/hex/file_updater/mixfile_updater.rb, line 11 def initialize(mixfile:, dependencies:) @mixfile = mixfile @dependencies = dependencies end
Public Instance Methods
updated_mixfile_content()
click to toggle source
# File lib/dependabot/hex/file_updater/mixfile_updater.rb, line 16 def updated_mixfile_content dependencies. select { |dep| requirement_changed?(mixfile, dep) }. reduce(mixfile.content.dup) do |content, dep| updated_content = content updated_content = update_requirement( content: updated_content, filename: mixfile.name, dependency: dep ) updated_content = update_git_pin( content: updated_content, filename: mixfile.name, dependency: dep ) raise "Expected content to change!" if content == updated_content updated_content end end
Private Instance Methods
requirement_changed?(file, dependency)
click to toggle source
# File lib/dependabot/hex/file_updater/mixfile_updater.rb, line 44 def requirement_changed?(file, dependency) changed_requirements = dependency.requirements - dependency.previous_requirements changed_requirements.any? { |f| f[:file] == file.name } end
update_git_pin(content:, filename:, dependency:)
click to toggle source
# File lib/dependabot/hex/file_updater/mixfile_updater.rb, line 71 def update_git_pin(content:, filename:, dependency:) updated_pin = dependency.requirements.find { |r| r[:file] == filename }&. dig(:source, :ref) old_pin = dependency.previous_requirements. find { |r| r[:file] == filename }&. dig(:source, :ref) return content unless old_pin return content if old_pin == updated_pin MixfileGitPinUpdater.new( dependency_name: dependency.name, mixfile_content: content, previous_pin: old_pin, updated_pin: updated_pin ).updated_content end
update_requirement(content:, filename:, dependency:)
click to toggle source
# File lib/dependabot/hex/file_updater/mixfile_updater.rb, line 51 def update_requirement(content:, filename:, dependency:) updated_req = dependency.requirements.find { |r| r[:file] == filename }. fetch(:requirement) old_req = dependency.previous_requirements. find { |r| r[:file] == filename }. fetch(:requirement) return content unless old_req MixfileRequirementUpdater.new( dependency_name: dependency.name, mixfile_content: content, previous_requirement: old_req, updated_requirement: updated_req ).updated_content end