Extended maintenance of Ruby versions 1.8.7 and 1.9.2 ended on July 31, 2014. Read more
# File 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, options| options[: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, options| options[:name] = /#{value}/i end add_option('-d', '--[no-]details', 'Display detailed information of gem(s)') do |value, options| options[:details] = value end add_option( '--[no-]versions', 'Display only gem names') do |value, options| options[:versions] = value options[:details] = false unless value end add_option('-a', '--all', 'Display all gem versions') do |value, options| options[:all] = value end add_option( '--[no-]prerelease', 'Display prerelease versions') do |value, options| options[:prerelease] = value end add_local_remote_options end
# File rubygems/commands/query_command.rb, line 60 def execute exit_code = 0 name = options[:name] prerelease = options[:prerelease] if options[:installed] then if name.source.empty? then alert_error "You must specify a gem name" exit_code |= 4 elsif installed? name, options[:version] then say "true" else say "false" exit_code |= 1 end raise Gem::SystemExitException, exit_code end dep = Gem::Dependency.new name, Gem::Requirement.default 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.source_index.search dep 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 = options[:all] begin 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 rescue Gem::RemoteFetcher::FetchError => e if prerelease then raise Gem::OperationNotSupportedError, "Prereleases not supported on legacy repositories" end raise unless fetcher.warn_legacy e do require 'rubygems/source_info_cache' dep.name = '' if dep.name == // specs = Gem::SourceInfoCache.search_with_source dep, false, all spec_tuples = specs.map do |spec, source_uri| [[spec.name, spec.version, spec.original_platform, spec], source_uri] end end end output_query_results spec_tuples end end