mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
47f0248b08
* test/rubygems: Ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41873 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
109 lines
1.9 KiB
Ruby
109 lines
1.9 KiB
Ruby
##
|
|
# Specifies a Specification object that should be activated.
|
|
# Also contains a dependency that was used to introduce this
|
|
# activation.
|
|
|
|
class Gem::DependencyResolver::ActivationRequest
|
|
|
|
attr_reader :request
|
|
|
|
attr_reader :spec
|
|
|
|
def initialize spec, req, others_possible = true
|
|
@spec = spec
|
|
@request = req
|
|
@others_possible = others_possible
|
|
end
|
|
|
|
def == other
|
|
case other
|
|
when Gem::Specification
|
|
@spec == other
|
|
when Gem::DependencyResolver::ActivationRequest
|
|
@spec == other.spec && @request == other.request
|
|
else
|
|
false
|
|
end
|
|
end
|
|
|
|
def download path
|
|
if @spec.respond_to? :source
|
|
source = @spec.source
|
|
else
|
|
source = Gem.sources.first
|
|
end
|
|
|
|
Gem.ensure_gem_subdirectories path
|
|
|
|
source.download full_spec, path
|
|
end
|
|
|
|
def full_name
|
|
@spec.full_name
|
|
end
|
|
|
|
def full_spec
|
|
Gem::Specification === @spec ? @spec : @spec.spec
|
|
end
|
|
|
|
def inspect # :nodoc:
|
|
others_possible = nil
|
|
others_possible = ' (others possible)' if @others_possible
|
|
|
|
'#<%s for %p from %s%s>' % [
|
|
self.class, @spec, @request, others_possible
|
|
]
|
|
end
|
|
|
|
##
|
|
# Indicates if the requested gem has already been installed.
|
|
|
|
def installed?
|
|
this_spec = full_spec
|
|
|
|
Gem::Specification.any? do |s|
|
|
s == this_spec
|
|
end
|
|
end
|
|
|
|
def name
|
|
@spec.name
|
|
end
|
|
|
|
##
|
|
# Indicate if this activation is one of a set of possible
|
|
# requests for the same Dependency request.
|
|
|
|
def others_possible?
|
|
@others_possible
|
|
end
|
|
|
|
##
|
|
# Return the ActivationRequest that contained the dependency
|
|
# that we were activated for.
|
|
|
|
def parent
|
|
@request.requester
|
|
end
|
|
|
|
def pretty_print q # :nodoc:
|
|
q.group 2, '[Activation request', ']' do
|
|
q.breakable
|
|
q.pp @spec
|
|
|
|
q.breakable
|
|
q.text ' for '
|
|
q.pp @request
|
|
|
|
|
|
q.breakable
|
|
q.text ' (other possible)' if @others_possible
|
|
end
|
|
end
|
|
|
|
def version
|
|
@spec.version
|
|
end
|
|
|
|
end
|
|
|