Class: Gem::Commands::OwnerCommand
- Inherits:
-
Gem::Command
- Object
- Gem::Command
- Gem::Commands::OwnerCommand
- Includes:
- GemcutterUtilities, LocalRemoteOptions, Text
- Defined in:
- lib/rubygems/commands/owner_command.rb
Constant Summary
Constants included from GemcutterUtilities
GemcutterUtilities::API_SCOPES, GemcutterUtilities::ERROR_CODE
Instance Attribute Summary
Attributes included from GemcutterUtilities
Attributes inherited from Gem::Command
#command, #defaults, #options, #program_name, #summary
Instance Method Summary collapse
- #add_owners(name, owners) ⇒ Object
-
#arguments ⇒ Object
:nodoc:.
-
#description ⇒ Object
:nodoc:.
- #execute ⇒ Object
-
#initialize ⇒ OwnerCommand
constructor
A new instance of OwnerCommand.
- #manage_owners(method, name, owners) ⇒ Object
- #remove_owners(name, owners) ⇒ Object
- #show_owners(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, #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=, #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 ⇒ OwnerCommand
Returns a new instance of OwnerCommand.
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/rubygems/commands/owner_command.rb', line 36 def initialize super "owner", "Manage gem owners of a gem on the push server" add_proxy_option add_key_option add_otp_option defaults.merge! :add => [], :remove => [] add_option "-a", "--add NEW_OWNER", "Add an owner by user identifier" do |value, | [:add] << value end add_option "-r", "--remove OLD_OWNER", "Remove an owner by user identifier" do |value, | [:remove] << value end add_option "-h", "--host HOST", "Use another gemcutter-compatible host", " (e.g. https://rubygems.org)" do |value, | [:host] = value end end |
Instance Method Details
#add_owners(name, owners) ⇒ Object
[View source]
86 87 88 |
# File 'lib/rubygems/commands/owner_command.rb', line 86 def add_owners(name, owners) manage_owners :post, name, owners end |
#arguments ⇒ Object
:nodoc:
28 29 30 |
# File 'lib/rubygems/commands/owner_command.rb', line 28 def arguments # :nodoc: "GEM gem to manage owners for" end |
#description ⇒ Object
:nodoc:
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/rubygems/commands/owner_command.rb', line 12 def description # :nodoc: <<-EOF The owner command lets you add and remove owners of a gem on a push server (the default is https://rubygems.org). Multiple owners can be added or removed at the same time, if the flag is given multiple times. The supported user identifiers are dependant on the push server. For rubygems.org, both e-mail and handle are supported, even though the user identifier field is called "email". The owner of a gem has the permission to push new versions, yank existing versions or edit the HTML page of the gem. Be careful of who you give push permission to. EOF end |
#execute ⇒ Object
[View source]
58 59 60 61 62 63 64 65 66 67 |
# File 'lib/rubygems/commands/owner_command.rb', line 58 def execute @host = [:host] sign_in(scope: get_owner_scope) name = get_one_gem_name add_owners name, [:add] remove_owners name, [:remove] show_owners name end |
#manage_owners(method, name, owners) ⇒ Object
[View source]
94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/rubygems/commands/owner_command.rb', line 94 def manage_owners(method, name, owners) owners.each do |owner| begin response = send_owner_request(method, name, owner) action = method == :delete ? "Removing" : "Adding" with_response response, "#{action} #{owner}" rescue # ignore end end end |
#remove_owners(name, owners) ⇒ Object
[View source]
90 91 92 |
# File 'lib/rubygems/commands/owner_command.rb', line 90 def remove_owners(name, owners) manage_owners :delete, name, owners end |
#show_owners(name) ⇒ Object
[View source]
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/rubygems/commands/owner_command.rb', line 69 def show_owners(name) Gem.load_yaml response = rubygems_api_request :get, "api/v1/gems/#{name}/owners.yaml" do |request| request.add_field "Authorization", api_key end with_response response do |resp| owners = Gem::SafeYAML.load clean_text(resp.body) say "Owners for gem: #{name}" owners.each do |owner| say "- #{owner['email'] || owner['handle'] || owner['id']}" end end end |
#usage ⇒ Object
:nodoc:
32 33 34 |
# File 'lib/rubygems/commands/owner_command.rb', line 32 def usage # :nodoc: "#{program_name} GEM" end |