1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/lib/rubygems/resolver/lock_specification.rb
hsbt 5335ce0e06 Merge master branch from rubygems/rubygems upstream.
* Enable Style/MethodDefParentheses in Rubocop
    https://github.com/rubygems/rubygems/pull/2478
  * Enable Style/MultilineIfThen in Rubocop
    https://github.com/rubygems/rubygems/pull/2479
  * Fix required_ruby_version with prereleases and improve error message
    https://github.com/rubygems/rubygems/pull/2344
  * Fix bundler rubygems binstub not properly looking for bundler
    https://github.com/rubygems/rubygems/pull/2426

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65904 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-21 10:20:47 +00:00

87 lines
1.8 KiB
Ruby

# frozen_string_literal: true
##
# The LockSpecification comes from a lockfile (Gem::RequestSet::Lockfile).
#
# A LockSpecification's dependency information is pre-filled from the
# lockfile.
class Gem::Resolver::LockSpecification < Gem::Resolver::Specification
attr_reader :sources
def initialize(set, name, version, sources, platform)
super()
@name = name
@platform = platform
@set = set
@source = sources.first
@sources = sources
@version = version
@dependencies = []
@spec = nil
end
##
# This is a null install as a locked specification is considered installed.
# +options+ are ignored.
def install(options = {})
destination = options[:install_dir] || Gem.dir
if File.exist? File.join(destination, 'specifications', spec.spec_name)
yield nil
return
end
super
end
##
# Adds +dependency+ from the lockfile to this specification
def add_dependency(dependency) # :nodoc:
@dependencies << dependency
end
def pretty_print(q) # :nodoc:
q.group 2, '[LockSpecification', ']' do
q.breakable
q.text "name: #{@name}"
q.breakable
q.text "version: #{@version}"
unless @platform == Gem::Platform::RUBY
q.breakable
q.text "platform: #{@platform}"
end
unless @dependencies.empty?
q.breakable
q.text 'dependencies:'
q.breakable
q.pp @dependencies
end
end
end
##
# A specification constructed from the lockfile is returned
def spec
@spec ||= Gem::Specification.find { |spec|
spec.name == @name and spec.version == @version
}
@spec ||= Gem::Specification.new do |s|
s.name = @name
s.version = @version
s.platform = @platform
s.dependencies.concat @dependencies
end
end
end