class Dependabot::Python::FileUpdater::RequirementFileUpdater

Attributes

credentials[R]
dependencies[R]
dependency_files[R]

Public Class Methods

new(dependencies:, dependency_files:, credentials:) click to toggle source
# File lib/dependabot/python/file_updater/requirement_file_updater.rb, line 16
def initialize(dependencies:, dependency_files:, credentials:)
  @dependencies = dependencies
  @dependency_files = dependency_files
  @credentials = credentials
end

Public Instance Methods

updated_dependency_files() click to toggle source
# File lib/dependabot/python/file_updater/requirement_file_updater.rb, line 22
def updated_dependency_files
  return @updated_dependency_files if @update_already_attempted

  @update_already_attempted = true
  @updated_dependency_files ||= fetch_updated_dependency_files
end

Private Instance Methods

dependency() click to toggle source
# File lib/dependabot/python/file_updater/requirement_file_updater.rb, line 31
def dependency
  # For now, we'll only ever be updating a single dependency
  dependencies.first
end
fetch_updated_dependency_files() click to toggle source
# File lib/dependabot/python/file_updater/requirement_file_updater.rb, line 36
def fetch_updated_dependency_files
  reqs = dependency.requirements.zip(dependency.previous_requirements)

  reqs.map do |(new_req, old_req)|
    next if new_req == old_req

    file = get_original_file(new_req.fetch(:file)).dup
    updated_content =
      updated_requirement_or_setup_file_content(new_req, old_req)
    next if updated_content == file.content

    file.content = updated_content
    file
  end.compact
end
get_original_file(filename) click to toggle source
# File lib/dependabot/python/file_updater/requirement_file_updater.rb, line 64
def get_original_file(filename)
  dependency_files.find { |f| f.name == filename }
end
updated_requirement_or_setup_file_content(new_req, old_req) click to toggle source
# File lib/dependabot/python/file_updater/requirement_file_updater.rb, line 52
def updated_requirement_or_setup_file_content(new_req, old_req)
  content = get_original_file(new_req.fetch(:file)).content

  RequirementReplacer.new(
    content: content,
    dependency_name: dependency.name,
    old_requirement: old_req.fetch(:requirement),
    new_requirement: new_req.fetch(:requirement),
    new_hash_version: dependency.version
  ).updated_content
end