# 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 31
    def initialize
      super 'owner', 'Manage gem owners of a gem on the push server'
      add_proxy_option
      add_key_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

### Public Instance Methods

add_owners(name, owners) click to toggle source

    # File lib/rubygems/commands/owner_command.rb, line 78
    def add_owners name, owners
      manage_owners :post, name, owners
    end

execute() click to toggle source

    # File lib/rubygems/commands/owner_command.rb, line 52
    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

manage_owners(method, name, owners) click to toggle source

    # File lib/rubygems/commands/owner_command.rb, line 86
    def manage_owners method, name, owners
      owners.each do |owner|
        begin
          response = rubygems_api_request method, "api/v1/gems/#{name}/owners" do |request|
            request.set_form_data 'email' => owner
            request.add_field "Authorization", api_key
          end

          action = method == :delete ? "Removing" : "Adding"

          with_response response, "#{action} #{owner}"
        rescue
          # ignore
        end
      end
    end

remove_owners(name, owners) click to toggle source

    # File lib/rubygems/commands/owner_command.rb, line 82
    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 63
    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