mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Import RubyGems 1.1.0
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15873 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
dc8359969e
commit
8cc45aae94
82 changed files with 5776 additions and 2928 deletions
|
@ -1,15 +1,25 @@
|
|||
require 'rubygems/command'
|
||||
require 'rubygems/local_remote_options'
|
||||
require 'rubygems/source_info_cache'
|
||||
require 'rubygems/version_option'
|
||||
|
||||
class Gem::Commands::QueryCommand < Gem::Command
|
||||
|
||||
include Gem::LocalRemoteOptions
|
||||
include Gem::VersionOption
|
||||
|
||||
def initialize(name = 'query',
|
||||
summary = 'Query gem information in local or remote repositories')
|
||||
super name, summary,
|
||||
:name => /.*/, :domain => :local, :details => false, :versions => true
|
||||
: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
|
||||
|
||||
add_option('-n', '--name-matches REGEXP',
|
||||
'Name of gem(s) to query on matches the',
|
||||
|
@ -28,33 +38,70 @@ class Gem::Commands::QueryCommand < Gem::Command
|
|||
options[:details] = false unless value
|
||||
end
|
||||
|
||||
add_option('-a', '--all',
|
||||
'Display all gem versions') do |value, options|
|
||||
options[:all] = value
|
||||
end
|
||||
|
||||
add_local_remote_options
|
||||
end
|
||||
|
||||
def defaults_str # :nodoc:
|
||||
"--local --name-matches '.*' --no-details --versions"
|
||||
"--local --name-matches // --no-details --versions --no-installed"
|
||||
end
|
||||
|
||||
def execute
|
||||
exit_code = 0
|
||||
|
||||
name = options[:name]
|
||||
|
||||
if options[:installed] then
|
||||
if name.source.empty? then
|
||||
alert_error "You must specify a gem name"
|
||||
exit_code |= 4
|
||||
elsif installed? name.source, options[:version] then
|
||||
say "true"
|
||||
else
|
||||
say "false"
|
||||
exit_code |= 1
|
||||
end
|
||||
|
||||
raise Gem::SystemExitException, exit_code
|
||||
end
|
||||
|
||||
if local? then
|
||||
say
|
||||
say "*** LOCAL GEMS ***"
|
||||
say
|
||||
output_query_results Gem.cache.search(name)
|
||||
|
||||
output_query_results Gem.source_index.search(name)
|
||||
end
|
||||
|
||||
if remote? then
|
||||
say
|
||||
say "*** REMOTE GEMS ***"
|
||||
say
|
||||
output_query_results Gem::SourceInfoCache.search(name)
|
||||
|
||||
begin
|
||||
Gem::SourceInfoCache.cache.refresh options[:all]
|
||||
rescue Gem::RemoteFetcher::FetchError
|
||||
# no network
|
||||
end
|
||||
|
||||
output_query_results Gem::SourceInfoCache.search(name, false, true)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
##
|
||||
# Check if gem +name+ version +version+ is installed.
|
||||
|
||||
def installed?(name, version = Gem::Requirement.default)
|
||||
dep = Gem::Dependency.new name, version
|
||||
!Gem.source_index.search(dep).empty?
|
||||
end
|
||||
|
||||
def output_query_results(gemspecs)
|
||||
output = []
|
||||
gem_list_with_version = {}
|
||||
|
@ -98,7 +145,7 @@ class Gem::Commands::QueryCommand < Gem::Command
|
|||
|
||||
##
|
||||
# Used for wrapping and indenting text
|
||||
#
|
||||
|
||||
def format_text(text, wrap, indent=0)
|
||||
result = []
|
||||
work = text.dup
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue