Class: Gem::Commands::WhichCommand
- Inherits:
-
Gem::Command
- Object
- Gem::Command
- Gem::Commands::WhichCommand
- Defined in:
- lib/rubygems/commands/which_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
- #find_paths(package_name, dirs) ⇒ Object
-
#initialize ⇒ WhichCommand
constructor
A new instance of WhichCommand.
-
#usage ⇒ Object
:nodoc:.
Methods inherited from Gem::Command
add_common_option, #add_extra_args, #add_option, add_specific_extra_args, #begins?, build_args, build_args=, #check_deprecated_options, common_options, #deprecate_option, #deprecated?, extra_args, extra_args=, #extract_gem_name_and_version, #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, #verbose
Methods included from DefaultUserInteraction
ui, #ui, ui=, #ui=, use_ui, #use_ui
Methods included from Text
#clean_text, #format_text, #levenshtein_distance, #min3, #truncate_text
Constructor Details
#initialize ⇒ WhichCommand
Returns a new instance of WhichCommand.
6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/rubygems/commands/which_command.rb', line 6 def initialize super "which", "Find the location of a library file you can require", search_gems_first: false, show_all: false add_option "-a", "--[no-]all", "show all matching files" do |show_all, | [:show_all] = show_all end add_option "-g", "--[no-]gems-first", "search gems before non-gems" do |gems_first, | [:search_gems_first] = gems_first end end |
Instance Method Details
#arguments ⇒ Object
:nodoc:
20 21 22 |
# File 'lib/rubygems/commands/which_command.rb', line 20 def arguments # :nodoc: "FILE name of file to find" end |
#defaults_str ⇒ Object
:nodoc:
24 25 26 |
# File 'lib/rubygems/commands/which_command.rb', line 24 def defaults_str # :nodoc: "--no-gems-first --no-all" end |
#description ⇒ Object
:nodoc:
28 29 30 31 32 33 34 35 36 37 |
# File 'lib/rubygems/commands/which_command.rb', line 28 def description # :nodoc: <<-EOF The which command is like the shell which command and shows you where the file you wish to require lives. You can use the which command to help determine why you are requiring a version you did not expect or to look at the content of a file you are requiring to see why it does not behave as you expect. EOF end |
#execute ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/rubygems/commands/which_command.rb', line 39 def execute found = true [:args].each do |arg| arg = arg.sub(/#{Regexp.union(*Gem.suffixes)}$/, "") dirs = $LOAD_PATH spec = Gem::Specification.find_by_path arg if spec if [:search_gems_first] dirs = spec.full_require_paths + $LOAD_PATH else dirs = $LOAD_PATH + spec.full_require_paths end end paths = find_paths arg, dirs if paths.empty? alert_error "Can't find Ruby library file or shared library #{arg}" found = false else say paths end end terminate_interaction 1 unless found end |
#find_paths(package_name, dirs) ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/rubygems/commands/which_command.rb', line 69 def find_paths(package_name, dirs) result = [] dirs.each do |dir| Gem.suffixes.each do |ext| full_path = File.join dir, "#{package_name}#{ext}" if File.exist?(full_path) && !File.directory?(full_path) result << full_path return result unless [:show_all] end end end result end |
#usage ⇒ Object
:nodoc:
85 86 87 |
# File 'lib/rubygems/commands/which_command.rb', line 85 def usage # :nodoc: "#{program_name} FILE [FILE ...]" end |