method
execute

v1_9_3_392 -
Show latest stable
-
0 notes -
Class: PristineCommand
- 1_8_6_287
- 1_8_7_72
- 1_8_7_330
- 1_9_1_378
- 1_9_2_180
- 1_9_3_125 (0)
- 1_9_3_392 (0)
- 2_1_10 (0)
- 2_2_9 (0)
- 2_4_6 (0)
- 2_5_5 (0)
- 2_6_3 (0)
- What's this?
execute()
public
Hide source
# File lib/rubygems/commands/pristine_command.rb, line 59 def execute specs = if options[:all] then Gem::Specification.map else get_all_gem_names.map do |gem_name| Gem::Specification.find_all_by_name gem_name, options[:version] end.flatten end if specs.to_a.empty? then raise Gem::Exception, "Failed to find gems #{options[:args]} #{options[:version]}" end install_dir = Gem.dir # TODO use installer option raise Gem::FilePermissionError.new(install_dir) unless File.writable?(install_dir) say "Restoring gems to pristine condition..." specs.each do |spec| unless spec.extensions.empty? or options[:extensions] then say "Skipped #{spec.full_name}, it needs to compile an extension" next end gem = spec.cache_file unless File.exist? gem then require 'rubygems/remote_fetcher' say "Cached gem for #{spec.full_name} not found, attempting to fetch..." dep = Gem::Dependency.new spec.name, spec.version Gem::RemoteFetcher.fetcher.download_to_cache dep end # TODO use installer options install_defaults = Gem::ConfigFile::PLATFORM_DEFAULTS['install'] installer_env_shebang = install_defaults.to_s['--env-shebang'] installer = Gem::Installer.new(gem, :wrappers => true, :force => true, :install_dir => spec.base_dir, :env_shebang => installer_env_shebang) installer.install say "Restored #{spec.full_name}" end end