# File rubygems/commands/owner_command.rb, line 32 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 EMAIL', 'Add an owner' do |value, options| options[:add] << value end add_option '-r', '--remove EMAIL', 'Remove an owner' 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
# File rubygems/commands/owner_command.rb, line 80 def add_owners(name, owners) manage_owners :post, name, owners end
# File rubygems/commands/owner_command.rb, line 54 def execute @host = options[:host] sign_in name = get_one_gem_name add_owners name, options[:add] remove_owners name, options[:remove] show_owners name end
# File rubygems/commands/owner_command.rb, line 88 def manage_owners(method, name, owners) owners.each do |owner| begin response = send_owner_request(method, name, owner) if need_otp? response response = send_owner_request(method, name, owner, true) end action = method == :delete ? "Removing" : "Adding" with_response response, "#{action} #{owner}" rescue # ignore end end end
# File rubygems/commands/owner_command.rb, line 84 def remove_owners(name, owners) manage_owners :delete, name, owners end
# File rubygems/commands/owner_command.rb, line 65 def show_owners(name) 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