rubygems-update 0.9.2 → 0.9.3
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rubygems-update might be problematic. Click here for more details.
- data/ChangeLog +60 -0
- data/lib/rubygems.rb +18 -15
- data/lib/rubygems/builder.rb +29 -23
- data/lib/rubygems/{cmd_manager.rb → command_manager.rb} +35 -24
- data/lib/rubygems/commands/build_command.rb +57 -0
- data/lib/rubygems/commands/cert_command.rb +83 -0
- data/lib/rubygems/commands/check_command.rb +74 -0
- data/lib/rubygems/commands/cleanup_command.rb +75 -0
- data/lib/rubygems/commands/contents_command.rb +66 -0
- data/lib/rubygems/commands/dependency_command.rb +105 -0
- data/lib/rubygems/commands/environment_command.rb +59 -0
- data/lib/rubygems/commands/help_command.rb +82 -0
- data/lib/rubygems/commands/install_command.rb +139 -0
- data/lib/rubygems/commands/list_command.rb +33 -0
- data/lib/rubygems/commands/outdated_command.rb +21 -0
- data/lib/rubygems/commands/pristine_command.rb +103 -0
- data/lib/rubygems/commands/query_command.rb +86 -0
- data/lib/rubygems/commands/rdoc_command.rb +75 -0
- data/lib/rubygems/commands/search_command.rb +35 -0
- data/lib/rubygems/commands/sources_command.rb +73 -0
- data/lib/rubygems/commands/specification_command.rb +58 -0
- data/lib/rubygems/commands/uninstall_command.rb +51 -0
- data/lib/rubygems/commands/unpack_command.rb +76 -0
- data/lib/rubygems/commands/update_command.rb +102 -0
- data/lib/rubygems/digest/digest_adapter.rb +40 -0
- data/lib/rubygems/digest/md5.rb +20 -0
- data/lib/rubygems/digest/sha1.rb +17 -0
- data/lib/rubygems/digest/sha2.rb +17 -0
- data/lib/rubygems/format.rb +1 -1
- data/lib/rubygems/gem_commands.rb +6 -1407
- data/lib/rubygems/gem_runner.rb +2 -2
- data/lib/rubygems/installer.rb +13 -5
- data/lib/rubygems/open-uri.rb +2 -2
- data/lib/rubygems/package.rb +13 -14
- data/lib/rubygems/rubygems_version.rb +1 -1
- data/lib/rubygems/source_index.rb +4 -4
- data/lib/rubygems/specification.rb +5 -0
- data/lib/rubygems/validator.rb +8 -8
- data/setup.rb +806 -588
- data/test/gemutilities.rb +2 -2
- data/test/test_builder.rb +15 -0
- data/test/test_check_command.rb +1 -1
- data/test/test_command.rb +1 -1
- data/test/test_gem_digest.rb +44 -0
- data/test/test_gem_outdated_command.rb +2 -1
- data/test/test_gem_sources_command.rb +11 -6
- data/test/test_installer.rb +1 -1
- data/test/test_open_uri.rb +14 -0
- data/test/test_parse_commands.rb +25 -25
- data/test/test_process_commands.rb +5 -5
- data/test/test_specific_extras.rb +1 -1
- data/test/test_validator.rb +3 -3
- metadata +30 -4
@@ -0,0 +1,75 @@
|
|
1
|
+
module Gem
|
2
|
+
module Commands
|
3
|
+
class CleanupCommand < Command
|
4
|
+
def initialize
|
5
|
+
super(
|
6
|
+
'cleanup',
|
7
|
+
'Clean up old versions of installed gems in the local repository',
|
8
|
+
{
|
9
|
+
:force => false,
|
10
|
+
:test => false,
|
11
|
+
:install_dir => Gem.dir
|
12
|
+
})
|
13
|
+
add_option('-d', '--dryrun', "") do |value, options|
|
14
|
+
options[:dryrun] = true
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def defaults_str
|
19
|
+
"--no-dryrun"
|
20
|
+
end
|
21
|
+
|
22
|
+
def arguments
|
23
|
+
"GEMNAME(s) name of gem(s) to cleanup"
|
24
|
+
end
|
25
|
+
|
26
|
+
def execute
|
27
|
+
say "Cleaning up installed gems..."
|
28
|
+
srcindex = Gem::SourceIndex.from_installed_gems
|
29
|
+
primary_gems = {}
|
30
|
+
srcindex.each do |name, spec|
|
31
|
+
if primary_gems[spec.name].nil? or primary_gems[spec.name].version < spec.version
|
32
|
+
primary_gems[spec.name] = spec
|
33
|
+
end
|
34
|
+
end
|
35
|
+
gems_to_cleanup = []
|
36
|
+
if ! options[:args].empty?
|
37
|
+
options[:args].each do |gem_name|
|
38
|
+
specs = Gem.cache.search(/^#{gem_name}$/i)
|
39
|
+
specs.each do |spec|
|
40
|
+
gems_to_cleanup << spec
|
41
|
+
end
|
42
|
+
end
|
43
|
+
else
|
44
|
+
srcindex.each do |name, spec|
|
45
|
+
gems_to_cleanup << spec
|
46
|
+
end
|
47
|
+
end
|
48
|
+
gems_to_cleanup = gems_to_cleanup.select { |spec|
|
49
|
+
primary_gems[spec.name].version != spec.version
|
50
|
+
}
|
51
|
+
uninstall_command = command_manager['uninstall']
|
52
|
+
deplist = DependencyList.new
|
53
|
+
gems_to_cleanup.uniq.each do |spec| deplist.add(spec) end
|
54
|
+
deplist.dependency_order.each do |spec|
|
55
|
+
if options[:dryrun]
|
56
|
+
say "Dry Run Mode: Would uninstall #{spec.full_name}"
|
57
|
+
else
|
58
|
+
say "Attempting uninstall on #{spec.full_name}"
|
59
|
+
options[:args] = [spec.name]
|
60
|
+
options[:version] = "= #{spec.version}"
|
61
|
+
options[:executables] = true
|
62
|
+
uninstall_command.merge_options(options)
|
63
|
+
begin
|
64
|
+
uninstall_command.execute
|
65
|
+
rescue Gem::DependencyRemovalException => ex
|
66
|
+
say "Unable to uninstall #{spec.full_name} ... continuing with remaining gems"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
say "Clean Up Complete"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
module Gem
|
2
|
+
module Commands
|
3
|
+
class ContentsCommand < Command
|
4
|
+
include CommandAids
|
5
|
+
include VersionOption
|
6
|
+
def initialize
|
7
|
+
super(
|
8
|
+
'contents',
|
9
|
+
'Display the contents of the installed gems',
|
10
|
+
{ :list => true, :specdirs => [] })
|
11
|
+
|
12
|
+
add_version_option('contents')
|
13
|
+
|
14
|
+
add_option("-l","--list",'List the files inside a Gem') do |v,o|
|
15
|
+
o[:list] = true
|
16
|
+
end
|
17
|
+
|
18
|
+
add_option('-s','--spec-dir a,b,c', Array, "Search for gems under specific paths") do |v,o|
|
19
|
+
o[:specdirs] = v
|
20
|
+
end
|
21
|
+
|
22
|
+
add_option('-V','--verbose','Be verbose when showing status') do |v,o|
|
23
|
+
o[:verbose] = v
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def execute(io=STDOUT)
|
28
|
+
if options[:list]
|
29
|
+
version = options[:version] || "> 0.0.0"
|
30
|
+
gem = get_one_gem_name
|
31
|
+
|
32
|
+
s = options[:specdirs].map do |i|
|
33
|
+
[i, File.join(i,"specifications")]
|
34
|
+
end.flatten
|
35
|
+
|
36
|
+
if s.empty?
|
37
|
+
s = Gem::SourceIndex.installed_spec_directories
|
38
|
+
path_kind = "default gem paths"
|
39
|
+
system = true
|
40
|
+
else
|
41
|
+
path_kind = "specified path"
|
42
|
+
system = false
|
43
|
+
end
|
44
|
+
|
45
|
+
si = Gem::SourceIndex.from_gems_in(*s)
|
46
|
+
|
47
|
+
gem_spec = si.search(gem, version).last
|
48
|
+
unless gem_spec
|
49
|
+
io.puts "Unable to find gem '#{gem}' in #{path_kind}"
|
50
|
+
if options[:verbose]
|
51
|
+
io.puts "\nDirectories searched:"
|
52
|
+
s.each do |p|
|
53
|
+
io.puts p
|
54
|
+
end
|
55
|
+
end
|
56
|
+
return
|
57
|
+
end
|
58
|
+
# show the list of files.
|
59
|
+
gem_spec.files.each do |f|
|
60
|
+
io.puts File.join(gem_spec.full_gem_path, f)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
module Gem
|
2
|
+
module Commands
|
3
|
+
class DependencyCommand < Command
|
4
|
+
include VersionOption
|
5
|
+
include CommandAids
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
super('dependency',
|
9
|
+
'Show the dependencies of an installed gem',
|
10
|
+
{:version=>"> 0"})
|
11
|
+
add_version_option('dependency')
|
12
|
+
add_option('-r', '--[no-]reverse-dependencies',
|
13
|
+
'Include reverse dependencies in the output'
|
14
|
+
) do |value, options|
|
15
|
+
options[:reverse_dependencies] = value
|
16
|
+
end
|
17
|
+
add_option('-p', '--pipe', "Pipe Format (name --version ver)") do |value, options|
|
18
|
+
options[:pipe_format] = value
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def defaults_str
|
23
|
+
"--version '> 0' --no-reverse"
|
24
|
+
end
|
25
|
+
|
26
|
+
def usage
|
27
|
+
"#{program_name} GEMNAME"
|
28
|
+
end
|
29
|
+
|
30
|
+
def arguments
|
31
|
+
"GEMNAME name of gems to show"
|
32
|
+
end
|
33
|
+
|
34
|
+
def execute
|
35
|
+
specs = {}
|
36
|
+
srcindex = SourceIndex.from_installed_gems
|
37
|
+
options[:args] << '.' if options[:args].empty?
|
38
|
+
options[:args].each do |name|
|
39
|
+
speclist = srcindex.search(name, options[:version])
|
40
|
+
if speclist.empty?
|
41
|
+
say "No match found for #{name} (#{options[:version]})"
|
42
|
+
else
|
43
|
+
speclist.each do |spec|
|
44
|
+
specs[spec.full_name] = spec
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
reverse = Hash.new { |h, k| h[k] = [] }
|
49
|
+
if options[:reverse_dependencies]
|
50
|
+
specs.values.each do |spec|
|
51
|
+
reverse[spec.full_name] = find_reverse_dependencies(spec, srcindex)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
if options[:pipe_format]
|
55
|
+
specs.values.sort.each do |spec|
|
56
|
+
unless spec.dependencies.empty?
|
57
|
+
spec.dependencies.each do |dep|
|
58
|
+
puts "#{dep.name} --version '#{dep.version_requirements}'"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
else
|
63
|
+
response = ''
|
64
|
+
specs.values.sort.each do |spec|
|
65
|
+
response << print_dependencies(spec)
|
66
|
+
unless reverse[spec.full_name].empty?
|
67
|
+
response << " Used by\n"
|
68
|
+
reverse[spec.full_name].each do |sp, dep|
|
69
|
+
response << " #{sp} (#{dep})\n"
|
70
|
+
end
|
71
|
+
end
|
72
|
+
response << "\n"
|
73
|
+
end
|
74
|
+
say response
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def print_dependencies(spec, level = 0)
|
79
|
+
response = ''
|
80
|
+
response << ' ' * level + "Gem #{spec.full_name}\n"
|
81
|
+
unless spec.dependencies.empty?
|
82
|
+
# response << ' ' * level + " Requires\n"
|
83
|
+
spec.dependencies.each do |dep|
|
84
|
+
response << ' ' * level + " #{dep}\n"
|
85
|
+
end
|
86
|
+
end
|
87
|
+
response
|
88
|
+
end
|
89
|
+
|
90
|
+
# Retuns list of [specification, dep] that are satisfied by spec.
|
91
|
+
def find_reverse_dependencies(spec, srcindex)
|
92
|
+
result = []
|
93
|
+
srcindex.each do |name, sp|
|
94
|
+
sp.dependencies.each do |dep|
|
95
|
+
if spec.name == dep.name &&
|
96
|
+
dep.version_requirements.satisfied_by?(spec.version)
|
97
|
+
result << [sp.full_name, dep]
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
result
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module Gem
|
2
|
+
module Commands
|
3
|
+
class EnvironmentCommand < Command
|
4
|
+
include CommandAids
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
super('environment', 'Display information about the RubyGems environment')
|
8
|
+
end
|
9
|
+
|
10
|
+
def usage
|
11
|
+
"#{program_name} [args]"
|
12
|
+
end
|
13
|
+
|
14
|
+
def arguments
|
15
|
+
args = <<-EOF
|
16
|
+
packageversion display the package version
|
17
|
+
gemdir display the path where gems are installed
|
18
|
+
gempath display path used to search for gems
|
19
|
+
version display the gem format version
|
20
|
+
remotesources display the remote gem servers
|
21
|
+
<omitted> display everything
|
22
|
+
EOF
|
23
|
+
return args.gsub(/^\s+/, '')
|
24
|
+
end
|
25
|
+
|
26
|
+
def execute
|
27
|
+
out = ''
|
28
|
+
arg = options[:args][0]
|
29
|
+
if begins?("packageversion", arg)
|
30
|
+
out = Gem::RubyGemsPackageVersion.to_s
|
31
|
+
elsif begins?("version", arg)
|
32
|
+
out = Gem::RubyGemsVersion.to_s
|
33
|
+
elsif begins?("gemdir", arg)
|
34
|
+
out = Gem.dir
|
35
|
+
elsif begins?("gempath", arg)
|
36
|
+
Gem.path.collect { |p| out << "#{p}\n" }
|
37
|
+
elsif begins?("remotesources", arg)
|
38
|
+
require 'sources'
|
39
|
+
out << Gem.sources.join("\n") << "\n"
|
40
|
+
elsif arg
|
41
|
+
fail Gem::CommandLineError, "Unknown enviroment option [#{arg}]"
|
42
|
+
else
|
43
|
+
out = "RubyGems Environment:\n"
|
44
|
+
out << " - VERSION: #{Gem::RubyGemsVersion} (#{Gem::RubyGemsPackageVersion})\n"
|
45
|
+
out << " - INSTALLATION DIRECTORY: #{Gem.dir}\n"
|
46
|
+
out << " - GEM PATH:\n"
|
47
|
+
Gem.path.collect { |p| out << " - #{p}\n" }
|
48
|
+
out << " - REMOTE SOURCES:\n"
|
49
|
+
require 'sources'
|
50
|
+
Gem.sources.collect do |s|
|
51
|
+
out << " - #{s}\n"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
say out
|
55
|
+
true
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
module Gem
|
2
|
+
module Commands
|
3
|
+
class HelpCommand < Command
|
4
|
+
include CommandAids
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
super('help', "Provide help on the 'gem' command")
|
8
|
+
end
|
9
|
+
|
10
|
+
def usage
|
11
|
+
"#{program_name} ARGUMENT"
|
12
|
+
end
|
13
|
+
|
14
|
+
def arguments
|
15
|
+
args = <<-EOF
|
16
|
+
commands List all 'gem' commands
|
17
|
+
examples Show examples of 'gem' usage
|
18
|
+
<command> Show specific help for <command>
|
19
|
+
EOF
|
20
|
+
return args.gsub(/^\s+/, '')
|
21
|
+
end
|
22
|
+
|
23
|
+
def execute
|
24
|
+
arg = options[:args][0]
|
25
|
+
if begins?("commands", arg)
|
26
|
+
out = []
|
27
|
+
out << "GEM commands are:"
|
28
|
+
out << nil
|
29
|
+
|
30
|
+
margin_width = 4
|
31
|
+
desc_width = command_manager.command_names.collect {|n| n.size}.max + 4
|
32
|
+
summary_width = 80 - margin_width - desc_width
|
33
|
+
wrap_indent = ' ' * (margin_width + desc_width)
|
34
|
+
format = "#{' ' * margin_width}%-#{desc_width}s%s"
|
35
|
+
|
36
|
+
command_manager.command_names.each do |cmd_name|
|
37
|
+
summary = command_manager[cmd_name].summary
|
38
|
+
summary = wrap(summary, summary_width).split "\n"
|
39
|
+
out << sprintf(format, cmd_name, summary.shift)
|
40
|
+
until summary.empty? do
|
41
|
+
out << "#{wrap_indent}#{summary.shift}"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
out << nil
|
46
|
+
out << "For help on a particular command, use 'gem help COMMAND'."
|
47
|
+
out << nil
|
48
|
+
out << "Commands may be abbreviated, so long as they are unambiguous."
|
49
|
+
out << "e.g. 'gem i rake' is short for 'gem install rake'."
|
50
|
+
|
51
|
+
say out.join("\n")
|
52
|
+
|
53
|
+
elsif begins?("options", arg)
|
54
|
+
say Gem::HELP
|
55
|
+
elsif begins?("examples", arg)
|
56
|
+
say Gem::EXAMPLES
|
57
|
+
elsif options[:help]
|
58
|
+
command = command_manager[options[:help]]
|
59
|
+
if command
|
60
|
+
# help with provided command
|
61
|
+
command.invoke("--help")
|
62
|
+
else
|
63
|
+
alert_error "Unknown command #{options[:help]}. Try 'gem help commands'"
|
64
|
+
end
|
65
|
+
elsif arg
|
66
|
+
possibilities = command_manager.find_command_possibilities(arg.downcase)
|
67
|
+
if possibilities.size == 1
|
68
|
+
command = command_manager[possibilities.first]
|
69
|
+
command.invoke("--help")
|
70
|
+
elsif possibilities.size > 1
|
71
|
+
alert_warning "Ambiguous command #{arg} (#{possibilities.join(', ')})"
|
72
|
+
else
|
73
|
+
alert_warning "Unknown command #{arg}. Try gem help commands"
|
74
|
+
end
|
75
|
+
else
|
76
|
+
say Gem::HELP
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,139 @@
|
|
1
|
+
module Gem
|
2
|
+
module Commands
|
3
|
+
class InstallCommand < Command
|
4
|
+
include CommandAids
|
5
|
+
include VersionOption
|
6
|
+
include LocalRemoteOptions
|
7
|
+
include InstallUpdateOptions
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
super(
|
11
|
+
'install',
|
12
|
+
'Install a gem into the local repository',
|
13
|
+
{
|
14
|
+
:domain => :both,
|
15
|
+
:generate_rdoc => true,
|
16
|
+
:generate_ri => true,
|
17
|
+
:force => false,
|
18
|
+
:test => false,
|
19
|
+
:wrappers => true,
|
20
|
+
:version => "> 0",
|
21
|
+
:install_dir => Gem.dir,
|
22
|
+
:security_policy => nil,
|
23
|
+
})
|
24
|
+
add_version_option('install')
|
25
|
+
add_local_remote_options
|
26
|
+
add_install_update_options
|
27
|
+
end
|
28
|
+
|
29
|
+
def usage
|
30
|
+
"#{program_name} GEMNAME [options]
|
31
|
+
or: #{program_name} GEMNAME [options] -- --build-flags"
|
32
|
+
end
|
33
|
+
|
34
|
+
def arguments
|
35
|
+
"GEMNAME name of gem to install"
|
36
|
+
end
|
37
|
+
|
38
|
+
def defaults_str
|
39
|
+
"--both --version '> 0' --rdoc --ri --no-force --no-test\n" +
|
40
|
+
"--install-dir #{Gem.dir}"
|
41
|
+
end
|
42
|
+
|
43
|
+
def execute
|
44
|
+
ENV['GEM_PATH'] = options[:install_dir]
|
45
|
+
if(options[:args].empty?)
|
46
|
+
fail Gem::CommandLineError,
|
47
|
+
"Please specify a gem name on the command line (e.g. gem build GEMNAME)"
|
48
|
+
end
|
49
|
+
options[:args].each do |gem_name|
|
50
|
+
if local?
|
51
|
+
begin
|
52
|
+
entries = []
|
53
|
+
if(File.exist?(gem_name) && !File.directory?(gem_name))
|
54
|
+
entries << gem_name
|
55
|
+
else
|
56
|
+
filepattern = gem_name + "*.gem"
|
57
|
+
entries = Dir[filepattern]
|
58
|
+
end
|
59
|
+
unless entries.size > 0
|
60
|
+
if options[:domain] == :local
|
61
|
+
alert_error "Local gem file not found: #{filepattern}"
|
62
|
+
end
|
63
|
+
else
|
64
|
+
result = Gem::Installer.new(entries.last, options).install(options[:force], options[:install_dir])
|
65
|
+
installed_gems = [result].flatten
|
66
|
+
say "Successfully installed #{installed_gems[0].name}, " +
|
67
|
+
"version #{installed_gems[0].version}" if installed_gems
|
68
|
+
end
|
69
|
+
rescue LocalInstallationError => e
|
70
|
+
say " -> Local installation can't proceed: #{e.message}"
|
71
|
+
rescue Gem::LoadError => e
|
72
|
+
say " -> Local installation can't proceed due to LoadError: #{e.message}"
|
73
|
+
rescue Gem::InstallError => e
|
74
|
+
raise "Error instaling #{gem_name}:\n\t#{e.message}"
|
75
|
+
rescue => e
|
76
|
+
# TODO: Fix this handle to allow the error to propagate to
|
77
|
+
# the top level handler. Examine the other errors as
|
78
|
+
# well. This implementation here looks suspicious to me --
|
79
|
+
# JimWeirich (4/Jan/05)
|
80
|
+
alert_error "Error installing gem #{gem_name}[.gem]: #{e.message}"
|
81
|
+
return
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
if remote? && installed_gems.nil?
|
86
|
+
installer = Gem::RemoteInstaller.new(options)
|
87
|
+
installed_gems = installer.install(
|
88
|
+
gem_name,
|
89
|
+
options[:version],
|
90
|
+
options[:force],
|
91
|
+
options[:install_dir])
|
92
|
+
if installed_gems
|
93
|
+
installed_gems.compact!
|
94
|
+
installed_gems.each do |spec|
|
95
|
+
say "Successfully installed #{spec.full_name}"
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
unless installed_gems
|
101
|
+
alert_error "Could not install a local " +
|
102
|
+
"or remote copy of the gem: #{gem_name}"
|
103
|
+
terminate_interaction(1)
|
104
|
+
end
|
105
|
+
|
106
|
+
# NOTE: *All* of the RI documents must be generated first.
|
107
|
+
# For some reason, RI docs cannot be generated after any RDoc
|
108
|
+
# documents are generated.
|
109
|
+
|
110
|
+
if options[:generate_ri]
|
111
|
+
installed_gems.each do |gem|
|
112
|
+
Gem::DocManager.new(gem, options[:rdoc_args]).generate_ri
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
if options[:generate_rdoc]
|
117
|
+
installed_gems.each do |gem|
|
118
|
+
Gem::DocManager.new(gem, options[:rdoc_args]).generate_rdoc
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
if options[:test]
|
123
|
+
installed_gems.each do |spec|
|
124
|
+
gem_spec = Gem::SourceIndex.from_installed_gems.search(spec.name, spec.version.version).first
|
125
|
+
result = Gem::Validator.new.unit_test(gem_spec)
|
126
|
+
unless result.passed?
|
127
|
+
unless ask_yes_no("...keep Gem?", true) then
|
128
|
+
Gem::Uninstaller.new(spec.name, spec.version.version).uninstall
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
end
|
137
|
+
|
138
|
+
end
|
139
|
+
end
|