class Gem::Commands::OwnerCommand
Public Class Methods
new()
click to toggle source
Calls superclass method
Gem::Command::new
# File lib/rubygems/commands/owner_command.rb, line 37 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, options| options[:add] << value end add_option "-r", "--remove OLD_OWNER", "Remove an owner by user identifier" do |value, options| options[:remove] << value end add_option "-h", "--host HOST", "Use another gemcutter-compatible host", " (e.g. https://rubygems.org)" do |value, options| options[:host] = value end end
Public Instance Methods
add_owners(name, owners)
click to toggle source
# File lib/rubygems/commands/owner_command.rb, line 87 def add_owners(name, owners) manage_owners :post, name, owners end
execute()
click to toggle source
# File lib/rubygems/commands/owner_command.rb, line 59 def execute @host = options[:host] sign_in(scope: get_owner_scope) name = get_one_gem_name add_owners name, options[:add] remove_owners name, options[:remove] show_owners name end
manage_owners(method, name, owners)
click to toggle source
# File lib/rubygems/commands/owner_command.rb, line 95 def manage_owners(method, name, owners) owners.each do |owner| response = send_owner_request(method, name, owner) action = method == :delete ? "Removing" : "Adding" with_response response, "#{action} #{owner}" rescue Gem::WebauthnVerificationError => e raise e rescue StandardError # ignore early exits to allow for completing the iteration of all owners end end
remove_owners(name, owners)
click to toggle source
# File lib/rubygems/commands/owner_command.rb, line 91 def remove_owners(name, owners) manage_owners :delete, name, owners end
show_owners(name)
click to toggle source
# File lib/rubygems/commands/owner_command.rb, line 70 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
Private Instance Methods
get_owner_scope(method: nil)
click to toggle source
# File lib/rubygems/commands/owner_command.rb, line 117 def get_owner_scope(method: nil) if method == :post || options.any? && options[:add].any? :add_owner elsif method == :delete || options.any? && options[:remove].any? :remove_owner end end
send_owner_request(method, name, owner)
click to toggle source
# File lib/rubygems/commands/owner_command.rb, line 110 def send_owner_request(method, name, owner) rubygems_api_request method, "api/v1/gems/#{name}/owners", scope: get_owner_scope(method: method) do |request| request.set_form_data "email" => owner request.add_field "Authorization", api_key end end