![show/hide quicksearch [+]](../../images/find.png)
frozen_string_literal: true
Parses a gem.deps.rb.lock file and constructs a LockSet containing the dependencies found inside. If the lock file is missing no LockSet is constructed.
Creates a new Lockfile for the given
request_set and gem_deps_file location.
 
               # File rubygems/request_set/lockfile.rb, line 46
def self.build(request_set, gem_deps_file, dependencies = nil)
  request_set.resolve
  dependencies ||= requests_to_deps request_set.sorted_requests
  new request_set, gem_deps_file, dependencies
end
             
             
               # File rubygems/request_set/lockfile.rb, line 76
def initialize(request_set, gem_deps_file, dependencies)
  @set           = request_set
  @dependencies  = dependencies
  @gem_deps_file = File.expand_path(gem_deps_file)
  @gem_deps_dir  = File.dirname(@gem_deps_file)
  if RUBY_VERSION < '2.7'
    @gem_deps_file.untaint unless gem_deps_file.tainted?
  end
  @platforms = []
end
             
             
               # File rubygems/request_set/lockfile.rb, line 129
def add_GIT(out, git_requests)
  return if git_requests.empty?
  by_repository_revision = git_requests.group_by do |request|
    source = request.spec.source
    [source.repository, source.rev_parse]
  end
  by_repository_revision.each do |(repository, revision), requests|
    out << "GIT"
    out << "  remote: #{repository}"
    out << "  revision: #{revision}"
    out << "  specs:"
    requests.sort_by { |request| request.name }.each do |request|
      out << "    #{request.name} (#{request.version})"
      dependencies = request.spec.dependencies.sort_by { |dep| dep.name }
      dependencies.each do |dep|
        out << "      #{dep.name}#{dep.requirement.for_lockfile}"
      end
    end
    out << nil
  end
end
             
             
               # File rubygems/request_set/lockfile.rb, line 199
def spec_groups
  requests.group_by { |request| request.spec.class }
end
             
            The contents of the lock file.
 
               # File rubygems/request_set/lockfile.rb, line 206
def to_s
  out = []
  groups = spec_groups
  add_PATH out, groups.delete(Gem::Resolver::VendorSpecification) { [] }
  add_GIT out, groups.delete(Gem::Resolver::GitSpecification) { [] }
  add_GEM out, groups
  add_PLATFORMS out
  add_DEPENDENCIES out
  out.join "\n"
end