Class: Gem::Commands::ContentsCommand
- Inherits:
-
Gem::Command
- Object
- Gem::Command
- Gem::Commands::ContentsCommand
- Includes:
- VersionOption
- Defined in:
- lib/rubygems/commands/contents_command.rb
Instance Attribute Summary
Attributes inherited from Gem::Command
#command, #defaults, #options, #program_name, #summary
Instance Method Summary collapse
-
#arguments ⇒ Object
:nodoc:.
-
#defaults_str ⇒ Object
:nodoc:.
-
#description ⇒ Object
:nodoc:.
- #execute ⇒ Object
- #files_in(spec) ⇒ Object
- #files_in_default_gem(spec) ⇒ Object
- #files_in_gem(spec) ⇒ Object
- #gem_contents(name) ⇒ Object
-
#gem_names ⇒ Object
:nodoc:.
-
#initialize ⇒ ContentsCommand
constructor
A new instance of ContentsCommand.
-
#path_description(spec_dirs) ⇒ Object
:nodoc:.
- #show_files(files) ⇒ Object
- #spec_for(name) ⇒ Object
-
#specification_directories ⇒ Object
:nodoc:.
-
#usage ⇒ Object
:nodoc:.
Methods included from VersionOption
#add_platform_option, #add_prerelease_option, #add_version_option
Methods inherited from Gem::Command
add_common_option, #add_extra_args, #add_option, add_specific_extra_args, #begins?, build_args, build_args=, common_options, extra_args, extra_args=, #get_all_gem_names, #get_all_gem_names_and_versions, #get_one_gem_name, #get_one_optional_argument, #handle_options, #handles?, #invoke, #invoke_with_build_args, #merge_options, #remove_option, #show_help, #show_lookup_failure, specific_extra_args, specific_extra_args_hash, #when_invoked
Methods included from UserInteraction
#alert, #alert_error, #alert_warning, #ask, #ask_for_password, #ask_yes_no, #choose_from_list, #say, #terminate_interaction
Methods included from DefaultUserInteraction
ui, #ui, ui=, #ui=, use_ui, #use_ui
Constructor Details
#initialize ⇒ ContentsCommand
Returns a new instance of ContentsCommand.
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/rubygems/commands/contents_command.rb', line 9 def initialize super 'contents', 'Display the contents of the installed gems', :specdirs => [], :lib_only => false, :prefix => true add_version_option add_option( '--all', "Contents for all gems") do |all, | [:all] = all end add_option('-s', '--spec-dir a,b,c', Array, "Search for gems under specific paths") do |spec_dirs, | [:specdirs] = spec_dirs end add_option('-l', '--[no-]lib-only', "Only return files in the Gem's lib_dirs") do |lib_only, | [:lib_only] = lib_only end add_option( '--[no-]prefix', "Don't include installed path prefix") do |prefix, | [:prefix] = prefix end @path_kind = nil @spec_dirs = nil @version = nil end |
Instance Method Details
#arguments ⇒ Object
:nodoc:
40 41 42 |
# File 'lib/rubygems/commands/contents_command.rb', line 40 def arguments # :nodoc: "GEMNAME name of gem to list contents for" end |
#defaults_str ⇒ Object
:nodoc:
44 45 46 |
# File 'lib/rubygems/commands/contents_command.rb', line 44 def defaults_str # :nodoc: "--no-lib-only --prefix" end |
#description ⇒ Object
:nodoc:
48 49 50 51 52 53 54 |
# File 'lib/rubygems/commands/contents_command.rb', line 48 def description # :nodoc: <<-EOF The contents command lists the files in an installed gem. The listing can be given as full file names, file names without the installed directory prefix or only the files that are requireable. EOF end |
#execute ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/rubygems/commands/contents_command.rb', line 60 def execute @version = [:version] || Gem::Requirement.default @spec_dirs = specification_directories @path_kind = path_description @spec_dirs names = gem_names names.each do |name| found = gem_contents name terminate_interaction 1 unless found or names.length > 1 end end |
#files_in(spec) ⇒ Object
74 75 76 77 78 79 80 |
# File 'lib/rubygems/commands/contents_command.rb', line 74 def files_in spec if spec.default_gem? then files_in_default_gem spec else files_in_gem spec end end |
#files_in_default_gem(spec) ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/rubygems/commands/contents_command.rb', line 93 def files_in_default_gem spec spec.files.sort.map do |file| case file when /\A#{spec.bindir}\// [Gem::ConfigMap[:bindir], $POSTMATCH] when /\.so\z/ [Gem::ConfigMap[:archdir], file] else [Gem::ConfigMap[:rubylibdir], file] end end end |
#files_in_gem(spec) ⇒ Object
82 83 84 85 86 87 88 89 90 91 |
# File 'lib/rubygems/commands/contents_command.rb', line 82 def files_in_gem spec gem_path = spec.full_gem_path extra = "/{#{spec.require_paths.join ','}}" if [:lib_only] glob = "#{gem_path}#{extra}/**/*" prefix_re = /#{Regexp.escape(gem_path)}\// Dir[glob].map do |file| [gem_path, file.sub(prefix_re, "")] end end |
#gem_contents(name) ⇒ Object
106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/rubygems/commands/contents_command.rb', line 106 def gem_contents name spec = spec_for name return false unless spec files = files_in spec show_files files true end |
#gem_names ⇒ Object
:nodoc:
118 119 120 121 122 123 124 |
# File 'lib/rubygems/commands/contents_command.rb', line 118 def gem_names # :nodoc: if [:all] then Gem::Specification.map(&:name) else get_all_gem_names end end |
#path_description(spec_dirs) ⇒ Object
:nodoc:
126 127 128 129 130 131 132 133 |
# File 'lib/rubygems/commands/contents_command.rb', line 126 def path_description spec_dirs # :nodoc: if spec_dirs.empty? then spec_dirs = Gem::Specification.dirs "default gem paths" else "specified path" end end |
#show_files(files) ⇒ Object
135 136 137 138 139 140 141 142 143 144 145 146 |
# File 'lib/rubygems/commands/contents_command.rb', line 135 def show_files files files.sort.each do |prefix, basename| absolute_path = File.join(prefix, basename) next if File.directory? absolute_path if [:prefix] then say absolute_path else say basename end end end |
#spec_for(name) ⇒ Object
148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
# File 'lib/rubygems/commands/contents_command.rb', line 148 def spec_for name spec = Gem::Specification.find_all_by_name(name, @version).last return spec if spec say "Unable to find gem '#{name}' in #{@path_kind}" if Gem.configuration.verbose then say "\nDirectories searched:" @spec_dirs.sort.each { |dir| say dir } end return nil end |
#specification_directories ⇒ Object
:nodoc:
163 164 165 166 167 |
# File 'lib/rubygems/commands/contents_command.rb', line 163 def specification_directories # :nodoc: [:specdirs].map do |i| [i, File.join(i, "specifications")] end.flatten end |
#usage ⇒ Object
:nodoc:
56 57 58 |
# File 'lib/rubygems/commands/contents_command.rb', line 56 def usage # :nodoc: "#{program_name} GEMNAME [GEMNAME ...]" end |