1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Update to RubyGems 1.3.4 r2223

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23659 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
drbrain 2009-06-09 21:38:59 +00:00
parent a6afbaeb3b
commit 31c94ffeb5
126 changed files with 7610 additions and 3747 deletions

View file

@ -12,7 +12,8 @@ class Gem::Commands::SpecificationCommand < Gem::Command
def initialize
super 'specification', 'Display gem specification (in yaml)',
:domain => :local, :version => Gem::Requirement.default
:domain => :local, :version => Gem::Requirement.default,
:format => :yaml
add_version_option('examine')
add_platform_option
@ -22,26 +23,62 @@ class Gem::Commands::SpecificationCommand < Gem::Command
options[:all] = true
end
add_option('--ruby', 'Output ruby format') do |value, options|
options[:format] = :ruby
end
add_option('--yaml', 'Output RUBY format') do |value, options|
options[:format] = :yaml
end
add_option('--marshal', 'Output Marshal format') do |value, options|
options[:format] = :marshal
end
add_local_remote_options
end
def arguments # :nodoc:
"GEMFILE name of gem to show the gemspec for"
<<-ARGS
GEMFILE name of gem to show the gemspec for
FIELD name of gemspec field to show
ARGS
end
def defaults_str # :nodoc:
"--local --version '#{Gem::Requirement.default}'"
"--local --version '#{Gem::Requirement.default}' --yaml"
end
def usage # :nodoc:
"#{program_name} [GEMFILE]"
"#{program_name} [GEMFILE] [FIELD]"
end
def execute
specs = []
gem = get_one_gem_name
gem = options[:args].shift
unless gem then
raise Gem::CommandLineError,
"Please specify a gem name or file on the command line"
end
dep = Gem::Dependency.new gem, options[:version]
field = get_one_optional_argument
if field then
field = field.intern
if options[:format] == :ruby then
raise Gem::CommandLineError, "--ruby and FIELD are mutually exclusive"
end
unless Gem::Specification.attribute_names.include? field then
raise Gem::CommandLineError,
"no field %p on Gem::Specification" % field.to_s
end
end
if local? then
if File.exist? gem then
specs << Gem::Format.from_file_by_path(gem).spec rescue nil
@ -63,7 +100,17 @@ class Gem::Commands::SpecificationCommand < Gem::Command
terminate_interaction 1
end
output = lambda { |s| say s.to_yaml; say "\n" }
output = lambda do |s|
s = s.send field if field
say case options[:format]
when :ruby then s.to_ruby
when :marshal then Marshal.dump s
else s.to_yaml
end
say "\n"
end
if options[:all] then
specs.each(&output)