Class: Gem::Commands::QueryCommand
- Inherits:
-
Gem::Command
- Object
- Gem::Command
- Gem::Commands::QueryCommand
- Includes:
- LocalRemoteOptions, Text, VersionOption
- Defined in:
- lib/rubygems/commands/query_command.rb
Direct Known Subclasses
Instance Attribute Summary
Attributes inherited from Gem::Command
#command, #defaults, #options, #program_name, #summary
Instance Method Summary collapse
-
#defaults_str ⇒ Object
:nodoc:.
- #execute ⇒ Object
-
#initialize(name = 'query', summary = 'Query gem information in local or remote repositories') ⇒ QueryCommand
constructor
A new instance of QueryCommand.
Methods included from VersionOption
#add_platform_option, #add_prerelease_option, #add_version_option
Methods included from LocalRemoteOptions
#accept_uri_http, #add_bulk_threshold_option, #add_clear_sources_option, #add_local_remote_options, #add_proxy_option, #add_source_option, #add_update_sources_option, #both?, #local?, #remote?
Methods included from Text
#format_text, #levenshtein_distance
Methods inherited from Gem::Command
add_common_option, #add_extra_args, #add_option, add_specific_extra_args, #arguments, #begins?, build_args, build_args=, common_options, #description, extra_args, extra_args=, #get_all_gem_names, #get_one_gem_name, #get_one_optional_argument, #handle_options, #handles?, #invoke, #merge_options, #remove_option, #show_help, #show_lookup_failure, specific_extra_args, specific_extra_args_hash, #usage, #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(name = 'query', summary = 'Query gem information in local or remote repositories') ⇒ QueryCommand
Returns a new instance of QueryCommand.
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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/rubygems/commands/query_command.rb', line 13 def initialize(name = 'query', summary = 'Query gem information in local or remote repositories') super name, summary, :name => //, :domain => :local, :details => false, :versions => true, :installed => false, :version => Gem::Requirement.default add_option('-i', '--[no-]installed', 'Check for installed gem') do |value, | [:installed] = value end add_version_option command, "for use with --installed" add_option('-n', '--name-matches REGEXP', 'Name of gem(s) to query on matches the', 'provided REGEXP') do |value, | [:name] = /#{value}/i end add_option('-d', '--[no-]details', 'Display detailed information of gem(s)') do |value, | [:details] = value end add_option( '--[no-]versions', 'Display only gem names') do |value, | [:versions] = value [:details] = false unless value end add_option('-a', '--all', 'Display all gem versions') do |value, | [:all] = value end add_option( '--[no-]prerelease', 'Display prerelease versions') do |value, | [:prerelease] = value end end |
Instance Method Details
#defaults_str ⇒ Object
:nodoc:
56 57 58 |
# File 'lib/rubygems/commands/query_command.rb', line 56 def defaults_str # :nodoc: "--local --name-matches // --no-details --versions --no-installed" end |
#execute ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/rubygems/commands/query_command.rb', line 60 def execute exit_code = 0 name = [:name] prerelease = [:prerelease] if [:installed] then if name.source.empty? then alert_error "You must specify a gem name" exit_code |= 4 elsif installed? name, [:version] then say "true" else say "false" exit_code |= 1 end terminate_interaction exit_code end req = Gem::Requirement.default # TODO: deprecate for real dep = Gem::Deprecate.skip_during { Gem::Dependency.new name, req } if local? then if prerelease and not both? then alert_warning "prereleases are always shown locally" end if ui.outs.tty? or both? then say say "*** LOCAL GEMS ***" say end specs = Gem::Specification.find_all { |s| s.name =~ name and req =~ s.version } spec_tuples = specs.map do |spec| [[spec.name, spec.version, spec.original_platform, spec], :local] end output_query_results spec_tuples end if remote? then if ui.outs.tty? or both? then say say "*** REMOTE GEMS ***" say end all = [:all] fetcher = Gem::SpecFetcher.fetcher spec_tuples = fetcher.find_matching dep, all, false, prerelease spec_tuples += fetcher.find_matching dep, false, false, true if prerelease and all output_query_results spec_tuples end end |