1. Gem::
  2. QueryUtils

module Gem::QueryUtils

Public Instance Methods

Source
# File lib/rubygems/query_utils.rb, line 13defadd_query_optionsadd_option("-i","--[no-]installed","Check for installed gem")do|value,options|options[:installed] =valueendadd_option("-I","Equivalent to --no-installed")do|_value,options|options[:installed] =falseendadd_version_optioncommand,"for use with --installed"add_option("-d","--[no-]details","Display detailed information of gem(s)")do|value,options|options[:details] =valueendadd_option("--[no-]versions","Display only gem names")do|value,options|options[:versions] =valueoptions[:details] =falseunlessvalueendadd_option("-a","--all","Display all gem versions")do|value,options|options[:all] =valueendadd_option("-e","--exact","Name of gem(s) to query on matches the","provided STRING")do|value,options|options[:exact] =valueendadd_option("--[no-]prerelease","Display prerelease versions")do|value,options|options[:prerelease] =valueendadd_local_remote_optionsend
Source
# File lib/rubygems/query_utils.rb, line 59defexecutegem_names =ifargs.empty?    [options[:name]]elseoptions[:exact]?args.map {|arg|/\A#{Regexp.escape(arg)}\Z/ }:args.map {|arg|/#{arg}/i }endterminate_interaction(check_installed_gems(gem_names))ifcheck_installed_gems?gem_names.each {|n|show_gems(n) }end

Private Instance Methods

Source
# File lib/rubygems/query_utils.rb, line 109defargsoptions[:args].to_aend
Source
# File lib/rubygems/query_utils.rb, line 73defcheck_installed_gems(gem_names)exit_code =0ifargs.empty?&&!gem_name?alert_error"You must specify a gem name"exit_code =4elsifgem_names.count>1alert_error"You must specify only ONE gem!"exit_code =4elseinstalled =installed?(gem_names.first,options[:version])installed =!installedunlessoptions[:installed]say(installed)exit_code =1unlessinstalledendexit_codeend
Source
# File lib/rubygems/query_utils.rb, line 93defcheck_installed_gems?!options[:installed].nil?end
Source
# File lib/rubygems/query_utils.rb, line 113defdisplay_header(type)if (ui.outs.tty?&&Gem.configuration.verbose)||both?saysay"*** #{type} GEMS ***"sayendend
Source
# File lib/rubygems/query_utils.rb, line 223defentry_details(entry,detail_tuple,specs,platforms)returnunlessoptions[:details]name_tuple,spec =detail_tuplespec =spec.fetch_spec(name_tuple)ifspec.respond_to?(:fetch_spec)entry<<"\n"spec_platformsentry,platformsspec_authorsentry,specspec_homepageentry,specspec_licenseentry,specspec_loaded_fromentry,spec,specsspec_summaryentry,specend
Source
# File lib/rubygems/query_utils.rb, line 240defentry_versions(entry,name_tuples,platforms,specs)returnunlessoptions[:versions]list =ifplatforms.empty?||options[:details]name_tuples.map(&:version).uniqelseplatforms.sort.reverse.mapdo|version,pls|out =version.to_sifoptions[:domain]==:localdefault =specs.any?do|s|!s.is_a?(Gem::Source)&&s.version==version&&s.default_gem?endout ="default: #{out}"ifdefaultendifpls!= [Gem::Platform::RUBY]platform_list = [pls.delete(Gem::Platform::RUBY),*pls.sort].compactout =platform_list.unshift(out).join(" ")endoutendendentry<<" (#{list.join ", "})"end
Source
# File lib/rubygems/query_utils.rb, line 97defgem_name?!options[:name].nil?end
Source
# File lib/rubygems/query_utils.rb, line 177definstalled?(name,req =Gem::Requirement.default)Gem::Specification.any? {|s|s.name=~name&&req=~s.version }end

Check if gemname versionversion is installed.

Source
# File lib/rubygems/query_utils.rb, line 269defmake_entry(entry_tuples,platforms)detail_tuple =entry_tuples.firstname_tuples,specs =entry_tuples.flatten.partitiondo|item|Gem::NameTuple===itemendentry = [name_tuples.first.name]entry_versions(entry,name_tuples,platforms,specs)entry_details(entry,detail_tuple,specs,platforms)entry.joinend
Source
# File lib/rubygems/query_utils.rb, line 181defoutput_query_results(spec_tuples)output = []versions =Hash.new {|h,name|h[name] = [] }spec_tuples.eachdo|spec_tuple,source|versions[spec_tuple.name]<< [spec_tuple,source]endversions =versions.sort_bydo|(n,_),_|n.downcaseendoutput_versionsoutput,versionssayoutput.join(options[:details]?"\n\n":"\n")end
Source
# File lib/rubygems/query_utils.rb, line 198defoutput_versions(output,versions)versions.eachdo|_gem_name,matching_tuples|matching_tuples =matching_tuples.sort_by {|n,_|n.version }.reverseplatforms =Hash.new {|h,version|h[version] = [] }matching_tuples.eachdo|n,_|platforms[n.version]<<n.platformifn.platformendseen = {}matching_tuples.delete_ifdo|n,_|ifseen[n.version]trueelseseen[n.version] =truefalseendendoutput<<clean_text(make_entry(matching_tuples,platforms))endend
Source
# File lib/rubygems/query_utils.rb, line 101defprereleaseoptions[:prerelease]end
Source
# File lib/rubygems/query_utils.rb, line 122defshow_gems(name)show_local_gems(name)iflocal?show_remote_gems(name)ifremote?end

Guts of original execute

Source
# File lib/rubygems/query_utils.rb, line 127defshow_local_gems(name,req =Gem::Requirement.default)display_header("LOCAL")specs =Gem::Specification.find_alldo|s|name_matches =name?s.name=~name:trueversion_matches =show_prereleases?||!s.version.prerelease?name_matches&&version_matchesend.uniq(&:full_name)spec_tuples =specs.mapdo|spec|    [spec.name_tuple,spec]endoutput_query_results(spec_tuples)end
Source
# File lib/rubygems/query_utils.rb, line 105defshow_prereleases?prerelease.nil?||prereleaseend
Source
# File lib/rubygems/query_utils.rb, line 144defshow_remote_gems(name)display_header("REMOTE")fetcher =Gem::SpecFetcher.fetcherspec_tuples =ifname.nil?fetcher.detect(specs_type) {true }elsefetcher.detect(specs_type)do|name_tuple|name===name_tuple.name&&options[:version].satisfied_by?(name_tuple.version)endendoutput_query_results(spec_tuples)end
Source
# File lib/rubygems/query_utils.rb, line 284defspec_authors(entry,spec)authors ="Author#{spec.authors.length > 1 ? "s" : ""}: ".dupauthors<<spec.authors.join(", ")entry<<format_text(authors,68,4)end
Source
# File lib/rubygems/query_utils.rb, line 290defspec_homepage(entry,spec)returnifspec.homepage.nil?||spec.homepage.empty?entry<<"\n"<<format_text("Homepage: #{spec.homepage}",68,4)end
Source
# File lib/rubygems/query_utils.rb, line 296defspec_license(entry,spec)returnifspec.license.nil?||spec.license.empty?licenses ="License#{spec.licenses.length > 1 ? "s" : ""}: ".duplicenses<<spec.licenses.join(", ")entry<<"\n"<<format_text(licenses,68,4)end
Source
# File lib/rubygems/query_utils.rb, line 304defspec_loaded_from(entry,spec,specs)returnunlessspec.loaded_fromifspecs.length==1default =spec.default_gem??" (default)":nilentry<<"\n"<<"    Installed at#{default}: #{spec.base_dir}"elselabel ="Installed at"specs.eachdo|s|version =s.version.to_sdefault =s.default_gem??", default":""entry<<"\n"<<"    #{label} (#{version}#{default}): #{s.base_dir}"label =" "*label.lengthendendend
Source
# File lib/rubygems/query_utils.rb, line 321defspec_platforms(entry,platforms)non_ruby =platforms.any?do|_,pls|pls.any? {|pl|pl!=Gem::Platform::RUBY }endreturnunlessnon_rubyifplatforms.length==1title =platforms.values.length==1?"Platform":"Platforms"entry<<"    #{title}: #{platforms.values.sort.join(", ")}\n"elseentry<<"    Platforms:\n"sorted_platforms =platforms.sortsorted_platforms.eachdo|version,pls|label ="        #{version}: "data =format_textpls.sort.join(", "),68,label.lengthdata[0,label.length] =labelentry<<data<<"\n"endendend
Source
# File lib/rubygems/query_utils.rb, line 345defspec_summary(entry,spec)summary =truncate_text(spec.summary,"the summary for #{spec.full_name}")entry<<"\n\n"<<format_text(summary,68,4)end
Source
# File lib/rubygems/query_utils.rb, line 160defspecs_typeifoptions[:all]||options[:version].specific?ifoptions[:prerelease]:completeelse:releasedendelsifoptions[:prerelease]:prereleaseelse:latestendend