mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
59 lines
1.2 KiB
Ruby
59 lines
1.2 KiB
Ruby
|
##
|
||
|
# 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
|
||
|
|
||
|
def initialize set, name, version, source, platform
|
||
|
super()
|
||
|
|
||
|
@name = name
|
||
|
@platform = platform
|
||
|
@set = set
|
||
|
@source = source
|
||
|
@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) then
|
||
|
yield nil
|
||
|
return
|
||
|
end
|
||
|
|
||
|
super
|
||
|
end
|
||
|
|
||
|
##
|
||
|
# Adds +dependency+ from the lockfile to this specification
|
||
|
|
||
|
def add_dependency dependency # :nodoc:
|
||
|
@dependencies << dependency
|
||
|
end
|
||
|
|
||
|
##
|
||
|
# A specification constructed from the lockfile is returned
|
||
|
|
||
|
def spec
|
||
|
@spec ||= Gem::Specification.new do |s|
|
||
|
s.name = @name
|
||
|
s.version = @version
|
||
|
s.platform = @platform
|
||
|
|
||
|
s.dependencies.concat @dependencies
|
||
|
end
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|