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.
Attributes
Class Methods
lib/rubygems/request_set/lockfile.rb
View on GitHub
# File tmp/rubies/ruby-3.2.0/lib/rubygems/request_set/lockfile.rb, line 43
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
Creates a new Lockfile
for the given request_set
and gem_deps_file
location.
lib/rubygems/request_set/lockfile.rb
View on GitHub
# File tmp/rubies/ruby-3.2.0/lib/rubygems/request_set/lockfile.rb, line 73
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
No documentation available
Instance Methods
lib/rubygems/request_set/lockfile.rb
View on GitHub
# File tmp/rubies/ruby-3.2.0/lib/rubygems/request_set/lockfile.rb, line 126
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
No documentation available
#
lib/rubygems/request_set/lockfile.rb
View on GitHub
# File tmp/rubies/ruby-3.2.0/lib/rubygems/request_set/lockfile.rb, line 234
def requests
@set.sorted_requests
end
No documentation available
lib/rubygems/request_set/lockfile.rb
View on GitHub
# File tmp/rubies/ruby-3.2.0/lib/rubygems/request_set/lockfile.rb, line 196
def spec_groups
requests.group_by {|request| request.spec.class }
end
No documentation available
#
lib/rubygems/request_set/lockfile.rb
View on GitHub
# File tmp/rubies/ruby-3.2.0/lib/rubygems/request_set/lockfile.rb, line 203
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
The contents of the lock file.
#
lib/rubygems/request_set/lockfile.rb
View on GitHub
# File tmp/rubies/ruby-3.2.0/lib/rubygems/request_set/lockfile.rb, line 224
def write
content = to_s
File.open "#{@gem_deps_file}.lock", "w" do |io|
io.write content
end
end
Writes the lock file alongside the gem dependencies file