Class: Gem::Commands::PushCommand
- Inherits:
-
Gem::Command
- Object
- Gem::Command
- Gem::Commands::PushCommand
- Includes:
- GemcutterUtilities, LocalRemoteOptions
- Defined in:
- lib/rubygems/commands/push_command.rb
Instance Attribute Summary
Attributes included from GemcutterUtilities
Attributes inherited from Gem::Command
#command, #defaults, #options, #program_name, #summary
Instance Method Summary collapse
-
#arguments ⇒ Object
:nodoc:.
-
#description ⇒ Object
:nodoc:.
- #execute ⇒ Object
-
#initialize ⇒ PushCommand
constructor
A new instance of PushCommand.
- #send_gem(name) ⇒ Object
-
#usage ⇒ Object
:nodoc:.
Methods included from GemcutterUtilities
#add_key_option, #api_key, #rubygems_api_request, #sign_in, #verify_api_key, #with_response
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=, common_options, #defaults_str, 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
Methods included from DefaultUserInteraction
ui, #ui, ui=, #ui=, use_ui, #use_ui
Constructor Details
#initialize ⇒ PushCommand
Returns a new instance of PushCommand.
22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/rubygems/commands/push_command.rb', line 22 def initialize super 'push', description, :host => self.host add_proxy_option add_key_option add_option('--host HOST', 'Push to another gemcutter-compatible host') do |value, | [:host] = value end @host = nil end |
Instance Method Details
#arguments ⇒ Object
:nodoc:
14 15 16 |
# File 'lib/rubygems/commands/push_command.rb', line 14 def arguments # :nodoc: "GEM built gem to push up" end |
#description ⇒ Object
:nodoc:
10 11 12 |
# File 'lib/rubygems/commands/push_command.rb', line 10 def description # :nodoc: 'Push a gem up to RubyGems.org' end |
#execute ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/rubygems/commands/push_command.rb', line 36 def execute @host = [:host] sign_in @host send_gem get_one_gem_name end |
#send_gem(name) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/rubygems/commands/push_command.rb', line 44 def send_gem name args = [:post, "api/v1/gems"] latest_rubygems_version = Gem.latest_rubygems_version if latest_rubygems_version < Gem.rubygems_version and Gem.rubygems_version.prerelease? and Gem::Version.new('2.0.0.rc.2') != Gem.rubygems_version then alert_error <<-ERROR You are using a beta release of RubyGems (#{Gem::VERSION}) which is not allowed to push gems. Please downgrade or upgrade to a release version. The latest released RubyGems version is #{latest_rubygems_version} You can upgrade or downgrade to the latest release version with: gem update --system=#{latest_rubygems_version} ERROR terminate_interaction 1 end unless @host then if gem_data = Gem::Package.new(name) then @host = gem_data.spec.['default_gem_server'] end end args << @host if @host say "Pushing gem to #{@host || Gem.host}..." response = rubygems_api_request(*args) do |request| request.body = Gem.read_binary name request.add_field "Content-Length", request.body.size request.add_field "Content-Type", "application/octet-stream" request.add_field "Authorization", api_key end with_response response end |
#usage ⇒ Object
:nodoc:
18 19 20 |
# File 'lib/rubygems/commands/push_command.rb', line 18 def usage # :nodoc: "#{program_name} GEM" end |