Class: Gem::Commands::FetchCommand
- Inherits:
-
Gem::Command
- Object
- Gem::Command
- Gem::Commands::FetchCommand
- Includes:
- LocalRemoteOptions, VersionOption
- Defined in:
- lib/rubygems/commands/fetch_command.rb
Instance Attribute Summary
Attributes inherited from Gem::Command
#command, #defaults, #options, #program_name, #summary
Instance Method Summary collapse
-
#arguments ⇒ Object
:nodoc:.
-
#check_version ⇒ Object
:nodoc:.
-
#defaults_str ⇒ Object
:nodoc:.
-
#description ⇒ Object
:nodoc:.
- #execute ⇒ Object
-
#initialize ⇒ FetchCommand
constructor
A new instance of FetchCommand.
-
#usage ⇒ Object
:nodoc:.
Methods included from VersionOption
#add_platform_option, #add_prerelease_option, #add_version_option, #get_platform_from_requirements
Methods included from LocalRemoteOptions
#accept_uri_http, #add_bulk_threshold_option, #add_clear_sources_option, #add_local_remote_options, #add_proxy_option, #add_source_option, #add_update_sources_option, #both?, #local?, #remote?
Methods inherited from Gem::Command
add_common_option, #add_extra_args, #add_option, add_specific_extra_args, #begins?, build_args, build_args=, #check_deprecated_options, common_options, #deprecate_option, #deprecated?, extra_args, extra_args=, #get_all_gem_names, #get_all_gem_names_and_versions, #get_one_gem_name, #get_one_optional_argument, #handle_options, #handles?, #invoke, #invoke_with_build_args, #merge_options, #remove_option, #show_help, #show_lookup_failure, specific_extra_args, specific_extra_args_hash, #when_invoked
Methods included from UserInteraction
#alert, #alert_error, #alert_warning, #ask, #ask_for_password, #ask_yes_no, #choose_from_list, #say, #terminate_interaction, #verbose
Methods included from DefaultUserInteraction
ui, #ui, ui=, #ui=, use_ui, #use_ui
Methods included from Text
#clean_text, #format_text, #levenshtein_distance, #min3, #truncate_text
Constructor Details
#initialize ⇒ FetchCommand
Returns a new instance of FetchCommand.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/rubygems/commands/fetch_command.rb', line 10 def initialize defaults = { :suggest_alternate => true, :version => Gem::Requirement.default, } super 'fetch', 'Download a gem and place it in the current directory', defaults add_bulk_threshold_option add_proxy_option add_source_option add_clear_sources_option add_version_option add_platform_option add_prerelease_option add_option '--[no-]suggestions', 'Suggest alternates when gems are not found' do |value, | [:suggest_alternate] = value end end |
Instance Method Details
#arguments ⇒ Object
:nodoc:
32 33 34 |
# File 'lib/rubygems/commands/fetch_command.rb', line 32 def arguments # :nodoc: 'GEMNAME name of gem to download' end |
#check_version ⇒ Object
:nodoc:
54 55 56 57 58 59 60 61 |
# File 'lib/rubygems/commands/fetch_command.rb', line 54 def check_version # :nodoc: if [:version] != Gem::Requirement.default and get_all_gem_names.size > 1 alert_error "Can't use --version with multiple gems. You can specify multiple gems with" \ " version requirements using `gem fetch 'my_gem:1.0.0' 'my_other_gem:~>2.0.0'`" terminate_interaction 1 end end |
#defaults_str ⇒ Object
:nodoc:
36 37 38 |
# File 'lib/rubygems/commands/fetch_command.rb', line 36 def defaults_str # :nodoc: "--version '#{Gem::Requirement.default}'" end |
#description ⇒ Object
:nodoc:
40 41 42 43 44 45 46 47 48 |
# File 'lib/rubygems/commands/fetch_command.rb', line 40 def description # :nodoc: <<-EOF The fetch command fetches gem files that can be stored for later use or unpacked to examine their contents. See the build command help for an example of unpacking a gem, modifying it, then repackaging it. EOF end |
#execute ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/rubygems/commands/fetch_command.rb', line 63 def execute check_version version = [:version] platform = Gem.platforms.last gem_names = get_all_gem_names_and_versions gem_names.each do |gem_name, gem_version| gem_version ||= version dep = Gem::Dependency.new gem_name, gem_version dep.prerelease = [:prerelease] suppress_suggestions = ![:suggest_alternate] 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 } if spec.nil? show_lookup_failure gem_name, gem_version, errors, suppress_suggestions, [:domain] next end source.download spec say "Downloaded #{spec.full_name}" end end |
#usage ⇒ Object
:nodoc:
50 51 52 |
# File 'lib/rubygems/commands/fetch_command.rb', line 50 def usage # :nodoc: "#{program_name} GEMNAME [GEMNAME ...]" end |