Class: Gem::Commands::PushCommand
- Inherits:
-
Gem::Command
- Object
- Gem::Command
- Gem::Commands::PushCommand
- Includes:
- GemcutterUtilities, LocalRemoteOptions
- Defined in:
- lib/rubygems/commands/push_command.rb
Constant Summary
Constants included from GemcutterUtilities
GemcutterUtilities::API_SCOPES, GemcutterUtilities::ERROR_CODE, GemcutterUtilities::EXCLUSIVELY_API_SCOPES
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, #add_otp_option, #api_key, #mfa_unauthorized?, #otp, #rubygems_api_request, #set_api_key, #sign_in, #update_scope, #verify_api_key, #webauthn_enabled?, #with_response
Methods included from Text
#clean_text, #format_text, #levenshtein_distance, #min3, #truncate_text
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, #defaults_str, #deprecate_option, #deprecated?, extra_args, extra_args=, #extract_gem_name_and_version, #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
Constructor Details
#initialize ⇒ PushCommand
Returns a new instance of PushCommand.
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/rubygems/commands/push_command.rb', line 32 def initialize super "push", "Push a gem up to the gem server", host: host, attestations: [] @user_defined_host = false add_proxy_option add_key_option add_otp_option add_option("--host HOST", "Push to another gemcutter-compatible host", " (e.g. https://rubygems.org)") do |value, | [:host] = value @user_defined_host = true end add_option("--attestation FILE", "Push with sigstore attestations") do |value, | [:attestations] << value end @host = nil end |
Instance Method Details
#arguments ⇒ Object
:nodoc:
24 25 26 |
# File 'lib/rubygems/commands/push_command.rb', line 24 def arguments # :nodoc: "GEM built gem to push up" end |
#description ⇒ Object
:nodoc:
12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/rubygems/commands/push_command.rb', line 12 def description # :nodoc: <<-EOF The push command uploads a gem to the push server (the default is https://rubygems.org) and adds it to the index. The gem can be removed from the index and deleted from the server using the yank command. For further discussion see the help for the yank command. The push command will use ~/.gem/credentials to authenticate to a server, but you can use the RubyGems environment variable GEM_HOST_API_KEY to set the api key to authenticate. EOF end |
#execute ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/rubygems/commands/push_command.rb', line 56 def execute gem_name = get_one_gem_name default_gem_server, push_host = get_hosts_for(gem_name) @host = if @user_defined_host [:host] elsif default_gem_server default_gem_server elsif push_host push_host else [:host] end sign_in @host, scope: get_push_scope send_gem(gem_name) end |
#send_gem(name) ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/rubygems/commands/push_command.rb', line 75 def send_gem(name) args = [:post, "api/v1/gems"] _, push_host = get_hosts_for(name) @host ||= push_host # Always include @host, even if it's nil args += [@host, push_host] say "Pushing gem to #{@host || Gem.host}..." response = send_push_request(name, args) with_response response end |
#usage ⇒ Object
:nodoc:
28 29 30 |
# File 'lib/rubygems/commands/push_command.rb', line 28 def usage # :nodoc: "#{program_name} GEM" end |