class Dependabot::NpmAndYarn::UpdateChecker::DependencyFilesBuilder

Attributes

credentials[R]
dependency[R]
dependency_files[R]

Public Class Methods

new(dependency:, dependency_files:, credentials:) click to toggle source
# File lib/dependabot/npm_and_yarn/update_checker/dependency_files_builder.rb, line 10
def initialize(dependency:, dependency_files:, credentials:)
  @dependency = dependency
  @dependency_files = dependency_files
  @credentials = credentials
end

Public Instance Methods

lockfiles() click to toggle source
# File lib/dependabot/npm_and_yarn/update_checker/dependency_files_builder.rb, line 46
def lockfiles
  [*package_locks, *shrinkwraps, *yarn_locks]
end
package_files() click to toggle source
# File lib/dependabot/npm_and_yarn/update_checker/dependency_files_builder.rb, line 50
def package_files
  @package_files ||=
    dependency_files.
    select { |f| f.name.end_with?("package.json") }
end
package_locks() click to toggle source
# File lib/dependabot/npm_and_yarn/update_checker/dependency_files_builder.rb, line 28
def package_locks
  @package_locks ||=
    dependency_files.
    select { |f| f.name.end_with?("package-lock.json") }
end
shrinkwraps() click to toggle source
# File lib/dependabot/npm_and_yarn/update_checker/dependency_files_builder.rb, line 40
def shrinkwraps
  @shrinkwraps ||=
    dependency_files.
    select { |f| f.name.end_with?("npm-shrinkwrap.json") }
end
write_temporary_dependency_files() click to toggle source
# File lib/dependabot/npm_and_yarn/update_checker/dependency_files_builder.rb, line 16
def write_temporary_dependency_files
  write_lock_files

  File.write(".npmrc", npmrc_content)

  package_files.each do |file|
    path = file.name
    FileUtils.mkdir_p(Pathname.new(path).dirname)
    File.write(file.name, prepared_package_json_content(file))
  end
end
yarn_locks() click to toggle source
# File lib/dependabot/npm_and_yarn/update_checker/dependency_files_builder.rb, line 34
def yarn_locks
  @yarn_locks ||=
    dependency_files.
    select { |f| f.name.end_with?("yarn.lock") }
end

Private Instance Methods

npmrc_content() click to toggle source
# File lib/dependabot/npm_and_yarn/update_checker/dependency_files_builder.rb, line 85
def npmrc_content
  NpmAndYarn::FileUpdater::NpmrcBuilder.new(
    credentials: credentials,
    dependency_files: dependency_files
  ).npmrc_content
end
prepared_package_json_content(file) click to toggle source
# File lib/dependabot/npm_and_yarn/update_checker/dependency_files_builder.rb, line 79
def prepared_package_json_content(file)
  NpmAndYarn::FileUpdater::PackageJsonPreparer.new(
    package_json_content: file.content
  ).prepared_content
end
prepared_yarn_lockfile_content(content) click to toggle source

Duplicated in NpmLockfileUpdater Remove the dependency we want to update from the lockfile and let yarn find the latest resolvable version and fix the lockfile

# File lib/dependabot/npm_and_yarn/update_checker/dependency_files_builder.rb, line 75
def prepared_yarn_lockfile_content(content)
  content.gsub(/^#{Regexp.quote(dependency.name)}\@.*?\n\n/m, "")
end
write_lock_files() click to toggle source
# File lib/dependabot/npm_and_yarn/update_checker/dependency_files_builder.rb, line 60
def write_lock_files
  yarn_locks.each do |f|
    FileUtils.mkdir_p(Pathname.new(f.name).dirname)
    File.write(f.name, prepared_yarn_lockfile_content(f.content))
  end

  [*package_locks, *shrinkwraps].each do |f|
    FileUtils.mkdir_p(Pathname.new(f.name).dirname)
    File.write(f.name, f.content)
  end
end