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 |
#extract_gem_name_and_version, #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 | Returns a value representing the “cost” of transforming str1 into str2 Vendored version of |
#truncate_text, #min3 |
Constructor Details
.new ⇒ ContentsCommand
# 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, 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 46
def arguments # :nodoc: "GEMNAME name of gem to list contents for" end
#defaults_str
# File 'lib/rubygems/commands/contents_command.rb', line 50
def defaults_str # :nodoc: "--no-lib-only --prefix" end
#description
# File 'lib/rubygems/commands/contents_command.rb', line 54
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 66
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 || names.length > 1 end end
#files_in(spec)
[ GitHub ]# File 'lib/rubygems/commands/contents_command.rb', line 85
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 104
def files_in_default_gem(spec) spec.files.map do |file| if file.start_with?("#{spec.bindir}/") [RbConfig::CONFIG["bindir"], file.delete_prefix("#{spec.bindir}/")] else gem spec.name, spec.version require_path = spec.require_paths.find do |path| file.start_with?("#{path}/") end requirable_part = file.delete_prefix("#{require_path}/") resolve = $LOAD_PATH.resolve_feature_path(requirable_part)&.last next unless resolve [resolve.delete_suffix(requirable_part), requirable_part] end end.compact end
#files_in_gem(spec)
[ GitHub ]# File 'lib/rubygems/commands/contents_command.rb', line 93
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 = %r{#{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 125
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 137
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 147
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 155
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 176
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 nil end
#specification_directories
# File 'lib/rubygems/commands/contents_command.rb', line 191
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 62
def usage # :nodoc: "#{program_name} GEMNAME [GEMNAME ...]" end