Class: Gem::Commands::ContentsCommand
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
::Gem::Command
|
|
Instance Chain:
|
|
Inherits: |
Gem::Command
|
Defined in: | lib/rubygems/commands/contents_command.rb |
Constant Summary
::Gem::Command
- Inherited
Class Attribute Summary
::Gem::Command
- Inherited
.build_args | Arguments used when building gems. |
.build_args=, .extra_args, .extra_args= |
Class Method Summary
- .new ⇒ ContentsCommand constructor
::Gem::Command
- Inherited
.add_common_option, | |
.add_specific_extra_args | Add a list of extra arguments for the given command. |
.common_options, | |
.new | Initializes a generic gem command named |
.specific_extra_args | Return an array of extra arguments for the command. |
.specific_extra_args_hash | Accessor for the specific extra args hash (self initializing). |
Instance Attribute Summary
::Gem::Command
- Inherited
#command | The name of the command. |
#defaults | The default options for the command. |
#options | The options for the command. |
#program_name | The name of the command for command-line invocation. |
#summary | A short description of the command. |
::Gem::DefaultUserInteraction
- Included
Instance Method Summary
- #execute
- #files_in(spec)
- #files_in_default_gem(spec)
- #files_in_gem(spec)
- #gem_contents(name)
- #gem_install_dir(name)
- #show_files(files)
- #spec_for(name)
- #arguments Internal use only
- #defaults_str Internal use only
- #description Internal use only
- #gem_names Internal use only
- #path_description(spec_dirs) Internal use only
- #specification_directories Internal use only
- #usage Internal use only
::Gem::VersionOption
- Included
#add_platform_option | Add the –platform option to the option parser. |
#add_prerelease_option | Add the –prerelease option to the option parser. |
#add_version_option | Add the –version option to the option parser. |
::Gem::Command
- Inherited
#add_extra_args | Adds extra args from ~/.gemrc. |
#add_option | Add a command-line option and handler to the command. |
#arguments | Override to provide details of the arguments a command takes. |
#begins? | True if |
#defaults_str | Override to display the default values of the command options. |
#description | Override to display a longer description of what this command does. |
#execute | Override to provide command handling. |
#get_all_gem_names | Get all gem names from the command line. |
#get_all_gem_names_and_versions | Get all [gem, version] from the command line. |
#get_one_gem_name | Get a single gem name from the command line. |
#get_one_optional_argument | Get a single optional argument from the command line. |
#handle_options | Handle the given list of arguments by parsing them and recording the results. |
#handles? | True if the command handles the given argument list. |
#invoke | Invoke the command with the given list of arguments. |
#invoke_with_build_args | Invoke the command with the given list of normal arguments and additional build arguments. |
#merge_options | Merge a set of command options with the set of default options (without modifying the default option hash). |
#remove_option | Remove previously defined command-line argument |
#show_help | Display the help message for the command. |
#show_lookup_failure | Display to the user that a gem couldn’t be found and reasons why. |
#usage | Override to display the usage for an individual gem command. |
#when_invoked | Call the given block when invoked. |
#add_parser_run_info | Adds a section with |
#configure_options, | |
#create_option_parser | Creates an option parser and fills it in with the help info for the command. |
#parser | Create on demand parser. |
#wrap | Wraps |
#add_parser_description, #add_parser_options, #add_parser_summary |
::Gem::UserInteraction
- Included
#alert | Displays an alert |
#alert_error | Displays an error |
#alert_warning | Displays a warning |
#ask | Asks a |
#ask_for_password | Asks for a password with a |
#ask_yes_no | Asks a yes or no |
#choose_from_list | Asks the user to answer |
#say | Displays the given |
#terminate_interaction | Terminates the RubyGems process with the given |
#verbose | Calls |
::Gem::DefaultUserInteraction
- Included
::Gem::Text
- Included
#clean_text | Remove any non-printable characters and make the text suitable for printing. |
#format_text | Wraps |
#levenshtein_distance | This code is based directly on the |
#truncate_text, #min3 |
Constructor Details
.new ⇒ ContentsCommand
# File 'lib/rubygems/commands/contents_command.rb', line 10
def initialize super 'contents', 'Display the contents of the installed gems', :specdirs => [], :lib_only => false, :prefix => true, :show_install_dir => false 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 add_option( '--[no-]show-install-dir', 'Show only the gem install dir') do |show, | [:show_install_dir] = show end @path_kind = nil @spec_dirs = nil @version = nil end
Instance Method Details
#arguments
# File 'lib/rubygems/commands/contents_command.rb', line 47
def arguments # :nodoc: "GEMNAME name of gem to list contents for" end
#defaults_str
# File 'lib/rubygems/commands/contents_command.rb', line 51
def defaults_str # :nodoc: "--no-lib-only --prefix" end
#description
# File 'lib/rubygems/commands/contents_command.rb', line 55
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
[ GitHub ]# File 'lib/rubygems/commands/contents_command.rb', line 67
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 = if [:show_install_dir] gem_install_dir name else gem_contents name end terminate_interaction 1 unless found or names.length > 1 end end
#files_in(spec)
[ GitHub ]# File 'lib/rubygems/commands/contents_command.rb', line 86
def files_in(spec) if spec.default_gem? files_in_default_gem spec else files_in_gem spec end end
#files_in_default_gem(spec)
[ GitHub ]# File 'lib/rubygems/commands/contents_command.rb', line 105
def files_in_default_gem(spec) spec.files.map do |file| case file when /\A#{spec.bindir}\// [RbConfig::CONFIG['bindir'], $POSTMATCH] when /\.so\z/ [RbConfig::CONFIG['archdir'], file] else [RbConfig::CONFIG['rubylibdir'], file] end end end
#files_in_gem(spec)
[ GitHub ]# File 'lib/rubygems/commands/contents_command.rb', line 94
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)
[ GitHub ]# File 'lib/rubygems/commands/contents_command.rb', line 118
def gem_contents(name) spec = spec_for name return false unless spec files = files_in spec show_files files true end
#gem_install_dir(name)
[ GitHub ]# File 'lib/rubygems/commands/contents_command.rb', line 130
def gem_install_dir(name) spec = spec_for name return false unless spec say spec.gem_dir true end
#gem_names
# File 'lib/rubygems/commands/contents_command.rb', line 140
def gem_names # :nodoc: if [:all] Gem::Specification.map(&:name) else get_all_gem_names end end
#path_description(spec_dirs)
# File 'lib/rubygems/commands/contents_command.rb', line 148
def path_description(spec_dirs) # :nodoc: if spec_dirs.empty? "default gem paths" else "specified path" end end
#show_files(files)
[ GitHub ]#spec_for(name)
[ GitHub ]# File 'lib/rubygems/commands/contents_command.rb', line 169
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 say "\nDirectories searched:" @spec_dirs.sort.each { |dir| say dir } end return nil end
#specification_directories
# File 'lib/rubygems/commands/contents_command.rb', line 184
def specification_directories # :nodoc: [:specdirs].map do |i| [i, File.join(i, "specifications")] end.flatten end
#usage
# File 'lib/rubygems/commands/contents_command.rb', line 63
def usage # :nodoc: "#{program_name} GEMNAME [GEMNAME ...]" end