Class Gem::Commands::SpecificationCommand
In: lib/rubygems/commands/specification_command.rb
Parent: Gem::Command

Methods

execute   new  

Included Modules

Gem::LocalRemoteOptions Gem::VersionOption

Public Class methods

[Source]

    # File lib/rubygems/commands/specification_command.rb, line 13
13:   def initialize
14:     super 'specification', 'Display gem specification (in yaml)',
15:           :domain => :local, :version => Gem::Requirement.default
16: 
17:     add_version_option('examine')
18:     add_platform_option
19: 
20:     add_option('--all', 'Output specifications for all versions of',
21:                'the gem') do |value, options|
22:       options[:all] = true
23:     end
24: 
25:     add_local_remote_options
26:   end

Public Instance methods

[Source]

    # File lib/rubygems/commands/specification_command.rb, line 40
40:   def execute
41:     specs = []
42:     gem = get_one_gem_name
43: 
44:     if local? then
45:       if File.exist? gem then
46:         specs << Gem::Format.from_file_by_path(gem).spec rescue nil
47:       end
48: 
49:       if specs.empty? then
50:         specs.push(*Gem.source_index.search(/\A#{gem}\z/, options[:version]))
51:       end
52:     end
53: 
54:     if remote? then
55:       Gem::SourceInfoCache.cache_data.each do |_,sice|
56:         specs.push(*sice.source_index.search(gem, options[:version]))
57:       end
58:     end
59: 
60:     if specs.empty? then
61:       alert_error "Unknown gem '#{gem}'"
62:       terminate_interaction 1
63:     end
64: 
65:     output = lambda { |s| say s.to_yaml; say "\n" }
66: 
67:     if options[:all] then
68:       specs.each(&output)
69:     else
70:       spec = specs.sort_by { |s| s.version }.last
71:       output[spec]
72:     end
73:   end

[Validate]