summaryrefslogtreecommitdiff
path: root/lib/rubygems/commands/specification_command.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rubygems/commands/specification_command.rb')
-rw-r--r--lib/rubygems/commands/specification_command.rb26
1 files changed, 24 insertions, 2 deletions
diff --git a/lib/rubygems/commands/specification_command.rb b/lib/rubygems/commands/specification_command.rb
index 921fd519e9..566a9cc66e 100644
--- a/lib/rubygems/commands/specification_command.rb
+++ b/lib/rubygems/commands/specification_command.rb
@@ -62,7 +62,25 @@ FIELD name of gemspec field to show
"Please specify a gem name or file on the command line"
end
- dep = Gem::Dependency.new gem, options[:version]
+ case options[:version]
+ when String
+ req = Gem::Requirement.parse options[:version]
+ when Gem::Requirement
+ req = options[:version]
+ else
+ raise Gem::CommandLineError, "Unsupported version type: #{options[:version]}"
+ end
+
+ if !req.none? and options[:all]
+ alert_error "Specify --all or -v, not both"
+ terminate_interaction 1
+ end
+
+ if options[:all]
+ dep = Gem::Dependency.new gem
+ else
+ dep = Gem::Dependency.new gem, options[:version]
+ end
field = get_one_optional_argument
@@ -80,7 +98,11 @@ FIELD name of gemspec field to show
end
if remote? then
- found = Gem::SpecFetcher.fetcher.fetch dep
+ found = Gem::SpecFetcher.fetcher.fetch dep, true
+
+ if dep.prerelease? or options[:prerelease]
+ found += Gem::SpecFetcher.fetcher.fetch dep, false, true, true
+ end
specs.push(*found.map { |spec,| spec })
end