| Class | Gem::Commands::InstallCommand |
| In: |
lib/rubygems/commands/install_command.rb
|
| Parent: | Gem::Command |
# File lib/rubygems/commands/install_command.rb, line 20
20: def initialize
21: defaults = Gem::DependencyInstaller::DEFAULT_OPTIONS.merge({
22: :generate_rdoc => true,
23: :generate_ri => true,
24: :format_executable => false,
25: :test => false,
26: :version => Gem::Requirement.default,
27: })
28:
29: super 'install', 'Install a gem into the local repository', defaults
30:
31: add_install_update_options
32: add_local_remote_options
33: add_platform_option
34: add_version_option
35: add_prerelease_option "to be installed. (Only for listed gems)"
36: end
# File lib/rubygems/commands/install_command.rb, line 105
105: def execute
106: if options[:include_dependencies] then
107: alert "`gem install -y` is now default and will be removed"
108: alert "use --ignore-dependencies to install only the gems you list"
109: end
110:
111: installed_gems = []
112:
113: ENV.delete 'GEM_PATH' if options[:install_dir].nil? and RUBY_VERSION > '1.9'
114:
115: exit_code = 0
116:
117: get_all_gem_names.each do |gem_name|
118: begin
119: inst = Gem::DependencyInstaller.new options
120: inst.install gem_name, options[:version]
121:
122: inst.installed_gems.each do |spec|
123: say "Successfully installed #{spec.full_name}"
124: end
125:
126: installed_gems.push(*inst.installed_gems)
127: rescue Gem::InstallError => e
128: alert_error "Error installing #{gem_name}:\n\t#{e.message}"
129: exit_code |= 1
130: rescue Gem::GemNotFoundException => e
131: show_lookup_failure e.name, e.version, e.errors
132:
133: exit_code |= 2
134: end
135: end
136:
137: unless installed_gems.empty? then
138: gems = installed_gems.length == 1 ? 'gem' : 'gems'
139: say "#{installed_gems.length} #{gems} installed"
140:
141: # NOTE: *All* of the RI documents must be generated first. For some
142: # reason, RI docs cannot be generated after any RDoc documents are
143: # generated.
144:
145: if options[:generate_ri] then
146: installed_gems.each do |gem|
147: Gem::DocManager.new(gem, options[:rdoc_args]).generate_ri
148: end
149:
150: Gem::DocManager.update_ri_cache
151: end
152:
153: if options[:generate_rdoc] then
154: installed_gems.each do |gem|
155: Gem::DocManager.new(gem, options[:rdoc_args]).generate_rdoc
156: end
157: end
158:
159: if options[:test] then
160: installed_gems.each do |spec|
161: gem_spec = Gem::SourceIndex.from_installed_gems.find_name(spec.name, spec.version.version).first
162: result = Gem::Validator.new.unit_test(gem_spec)
163: if result and not result.passed?
164: unless ask_yes_no("...keep Gem?", true)
165: require 'rubygems/uninstaller'
166: Gem::Uninstaller.new(spec.name, :version => spec.version.version).uninstall
167: end
168: end
169: end
170: end
171: end
172:
173: raise Gem::SystemExitException, exit_code
174: end