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. |
#deprecated?, | |
#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. |
#get_platform_from_requirements | Extract platform given on the command line. |
::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 |
#check_deprecated_options, | |
#defaults_str | Override to display the default values of the command options. |
#deprecate_option | Mark a command-line option as deprecated, and optionally specify a deprecation horizon. |
#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. |
#option_is_deprecated?, | |
#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 8
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 45
def arguments # :nodoc: "GEMNAME name of gem to list contents for" end
#defaults_str
# File 'lib/rubygems/commands/contents_command.rb', line 49
def defaults_str # :nodoc: "--no-lib-only --prefix" end
#description
# File 'lib/rubygems/commands/contents_command.rb', line 53
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 65
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 84
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 103
def files_in_default_gem(spec) spec.files.map do |file| case file when /\A#{spec.bindir}\// # $' is POSTMATCH [RbConfig::CONFIG['bindir'], $'] 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 92
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 117
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 129
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 139
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 147
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 168
def spec_for(name) spec = Gem::Specification.find_all_by_name(name, @version).first 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 183
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 61
def usage # :nodoc: "#{program_name} GEMNAME [GEMNAME ...]" end