class Gem::Commands::FetchCommand

def arguments # :nodoc:

:nodoc:
def arguments # :nodoc:
  'GEMNAME       name of gem to download'
end

def defaults_str # :nodoc:

:nodoc:
def defaults_str # :nodoc:
  "--version '#{Gem::Requirement.default}'"
end

def description # :nodoc:

:nodoc:
def description # :nodoc:
  <<-EOF
e fetch command fetches gem files that can be stored for later use or
packed to examine their contents.
e the build command help for an example of unpacking a gem, modifying it,
en repackaging it.
  EOF
end

def execute

def execute
  version = options[:version] || Gem::Requirement.default
  platform  = Gem.platforms.last
  gem_names = get_all_gem_names
  gem_names.each do |gem_name|
    dep = Gem::Dependency.new gem_name, version
    dep.prerelease = options[:prerelease]
    specs_and_sources, errors =
      Gem::SpecFetcher.fetcher.spec_for_dependency dep
    if platform
      filtered = specs_and_sources.select {|s,| s.platform == platform }
      specs_and_sources = filtered unless filtered.empty?
    end
    spec, source = specs_and_sources.max_by {|s,| s.version }
    if spec.nil?
      show_lookup_failure gem_name, version, errors, options[:domain]
      next
    end
    source.download spec
    say "Downloaded #{spec.full_name}"
  end
end

def initialize

def initialize
  super 'fetch', 'Download a gem and place it in the current directory'
  add_bulk_threshold_option
  add_proxy_option
  add_source_option
  add_clear_sources_option
  add_version_option
  add_platform_option
  add_prerelease_option
end

def usage # :nodoc:

:nodoc:
def usage # :nodoc:
  "#{program_name} GEMNAME [GEMNAME ...]"
end