class Dependabot::Bundler::FileUpdater::GemspecUpdater

Attributes

dependencies[R]
gemspec[R]

Public Class Methods

new(dependencies:, gemspec:) click to toggle source
# File lib/dependabot/bundler/file_updater/gemspec_updater.rb, line 11
def initialize(dependencies:, gemspec:)
  @dependencies = dependencies
  @gemspec = gemspec
end

Public Instance Methods

updated_gemspec_content() click to toggle source
# File lib/dependabot/bundler/file_updater/gemspec_updater.rb, line 16
def updated_gemspec_content
  content = gemspec.content

  dependencies.each do |dependency|
    content = replace_gemspec_version_requirement(
      gemspec, dependency, content
    )
  end

  content
end

Private Instance Methods

replace_gemspec_version_requirement(gemspec, dependency, content) click to toggle source
# File lib/dependabot/bundler/file_updater/gemspec_updater.rb, line 32
def replace_gemspec_version_requirement(gemspec, dependency, content)
  return content unless requirement_changed?(gemspec, dependency)

  updated_requirement =
    dependency.requirements.
    find { |r| r[:file] == gemspec.name }.
    fetch(:requirement)

  previous_requirement =
    dependency.previous_requirements.
    find { |r| r[:file] == gemspec.name }.
    fetch(:requirement)

  RequirementReplacer.new(
    dependency: dependency,
    file_type: :gemspec,
    updated_requirement: updated_requirement,
    previous_requirement: previous_requirement
  ).rewrite(content)
end
requirement_changed?(file, dependency) click to toggle source
# File lib/dependabot/bundler/file_updater/gemspec_updater.rb, line 53
def requirement_changed?(file, dependency)
  changed_requirements =
    dependency.requirements - dependency.previous_requirements

  changed_requirements.any? { |f| f[:file] == file.name }
end