1
1
require 'rubygems/command'
2
2
require 'rubygems/local_remote_options'
3
3
require 'rubygems/version_option'
4
require 'rubygems/source_info_cache'
6
5
class Gem::Commands::FetchCommand < Gem::Command
36
35
version = options[:version] || Gem::Requirement.default
37
36
all = Gem::Requirement.default != version
38
platform = Gem.platforms.last
39
39
gem_names = get_all_gem_names
41
41
gem_names.each do |gem_name|
42
42
dep = Gem::Dependency.new gem_name, version
43
43
dep.prerelease = options[:prerelease]
45
specs_and_sources = Gem::SpecFetcher.fetcher.fetch(dep, all, true,
48
45
specs_and_sources, errors =
49
46
Gem::SpecFetcher.fetcher.fetch_with_errors(dep, all, true,
50
filtered = specs_and_sources.select { |s,| s.platform == platform }
51
specs_and_sources = filtered unless filtered.empty?
52
54
spec, source_uri = specs_and_sources.sort_by { |s,| s.version }.last
55
show_lookup_failure gem_name, version, errors
57
show_lookup_failure gem_name, version, errors, options[:domain]
59
61
path = Gem::RemoteFetcher.fetcher.download spec, source_uri
60
FileUtils.mv path, spec.file_name
62
FileUtils.mv path, File.basename(spec.cache_file)
62
64
say "Downloaded #{spec.full_name}"