gemcutter 0.4.1 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +5 -6
- data/lib/rubygems/commands/{migrate.rb → migrate_command.rb} +0 -0
- data/lib/rubygems/commands/{tumble.rb → tumble_command.rb} +0 -0
- data/lib/rubygems/commands/{webhook.rb → webhook_command.rb} +4 -6
- data/lib/rubygems/commands/yank_command.rb +72 -0
- data/lib/rubygems_plugin.rb +7 -1
- data/test/webhook_command_test.rb +14 -9
- data/test/yank_command_test.rb +85 -0
- metadata +35 -30
- data/lib/gemcutter.rb +0 -6
    
        data/Rakefile
    CHANGED
    
    | @@ -13,14 +13,13 @@ begin | |
| 13 13 | 
             
              require 'jeweler'
         | 
| 14 14 | 
             
              Jeweler::Tasks.new do |gem|
         | 
| 15 15 | 
             
                gem.name = "gemcutter"
         | 
| 16 | 
            -
                gem.version = "0. | 
| 16 | 
            +
                gem.version = "0.6.0"
         | 
| 17 17 | 
             
                gem.summary = "Commands to interact with RubyGems.org"
         | 
| 18 18 | 
             
                gem.description = "Adds several commands to RubyGems for managing gems and more on RubyGems.org."
         | 
| 19 19 | 
             
                gem.email = "nick@quaran.to"
         | 
| 20 20 | 
             
                gem.homepage = "http://rubygems.org"
         | 
| 21 21 | 
             
                gem.authors = ["Nick Quaranto"]
         | 
| 22 22 | 
             
                gem.files = FileList["lib/rubygems_plugin.rb",
         | 
| 23 | 
            -
                                     "lib/gemcutter.rb",
         | 
| 24 23 | 
             
                                     "lib/rubygems/commands/*",
         | 
| 25 24 | 
             
                                     "test/*_helper.rb",
         | 
| 26 25 | 
             
                                     "test/*_test.rb",
         | 
| @@ -28,7 +27,6 @@ begin | |
| 28 27 | 
             
                                     "Rakefile"]
         | 
| 29 28 | 
             
                gem.test_files = []
         | 
| 30 29 | 
             
                gem.executables = []
         | 
| 31 | 
            -
                gem.add_runtime_dependency('json_pure')
         | 
| 32 30 | 
             
                %w[rake shoulda activesupport webmock rr].each do |dep|
         | 
| 33 31 | 
             
                  gem.add_development_dependency(dep)
         | 
| 34 32 | 
             
                end
         | 
| @@ -38,9 +36,10 @@ begin | |
| 38 36 |  | 
| 39 37 | 
             
                       Thanks for installing Gemcutter! You can now run:
         | 
| 40 38 |  | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            -
             | 
| 39 | 
            +
              gem push        merged into RubyGems 1.3.6
         | 
| 40 | 
            +
              gem owner       merged into RubyGems 1.3.6
         | 
| 41 | 
            +
              gem webhook     register urls to be pinged when gems are pushed
         | 
| 42 | 
            +
              gem yank        remove a specific version of a gem from RubyGems.org
         | 
| 44 43 |  | 
| 45 44 | 
             
            ========================================================================
         | 
| 46 45 |  | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| @@ -74,15 +74,13 @@ EOF | |
| 74 74 | 
             
              end
         | 
| 75 75 |  | 
| 76 76 | 
             
              def list_webhooks
         | 
| 77 | 
            -
                 | 
| 78 | 
            -
             | 
| 79 | 
            -
                resp = rubygems_api_request(:get, "api/v1/web_hooks") do |request|
         | 
| 77 | 
            +
                resp = rubygems_api_request(:get, "api/v1/web_hooks.yaml") do |request|
         | 
| 80 78 | 
             
                  request.add_field("Authorization", Gem.configuration.rubygems_api_key)
         | 
| 81 79 | 
             
                end
         | 
| 82 80 |  | 
| 83 81 | 
             
                with_response(resp) do |response|
         | 
| 84 82 | 
             
                  begin
         | 
| 85 | 
            -
                    groups =  | 
| 83 | 
            +
                    groups = YAML.load(response.body)
         | 
| 86 84 |  | 
| 87 85 | 
             
                    if groups.size.zero?
         | 
| 88 86 | 
             
                      say "You haven't added any webhooks yet."
         | 
| @@ -100,9 +98,9 @@ EOF | |
| 100 98 | 
             
                        end
         | 
| 101 99 | 
             
                      end
         | 
| 102 100 | 
             
                    end
         | 
| 103 | 
            -
                  rescue  | 
| 101 | 
            +
                  rescue Exception => error
         | 
| 104 102 | 
             
                    say "There was a problem parsing the data:"
         | 
| 105 | 
            -
                    say  | 
| 103 | 
            +
                    say error.to_s
         | 
| 106 104 | 
             
                    terminate_interaction
         | 
| 107 105 | 
             
                  end
         | 
| 108 106 | 
             
                end
         | 
| @@ -0,0 +1,72 @@ | |
| 1 | 
            +
            require 'rubygems/local_remote_options'
         | 
| 2 | 
            +
            require 'rubygems/version_option'
         | 
| 3 | 
            +
            require 'rubygems/gemcutter_utilities'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            class Gem::Commands::YankCommand < Gem::Command
         | 
| 6 | 
            +
              include Gem::LocalRemoteOptions
         | 
| 7 | 
            +
              include Gem::VersionOption
         | 
| 8 | 
            +
              include Gem::GemcutterUtilities
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              def description
         | 
| 11 | 
            +
                'Remove a specific gem version release from RubyGems.org'
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              def arguments
         | 
| 15 | 
            +
                "GEM       name of gem"
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              def usage
         | 
| 19 | 
            +
                "#{program_name} GEM -v VERSION [--undo]"
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
              
         | 
| 22 | 
            +
              def initialize
         | 
| 23 | 
            +
                super 'yank', description
         | 
| 24 | 
            +
                add_version_option("remove")
         | 
| 25 | 
            +
                add_option('--undo') do |value, options|
         | 
| 26 | 
            +
                  options[:undo] = true
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
              def execute
         | 
| 31 | 
            +
                sign_in
         | 
| 32 | 
            +
                version = get_version_from_requirements(options[:version])
         | 
| 33 | 
            +
                if !version.nil?
         | 
| 34 | 
            +
                  if options[:undo]
         | 
| 35 | 
            +
                    unyank_gem(version)
         | 
| 36 | 
            +
                  else
         | 
| 37 | 
            +
                    yank_gem(version)
         | 
| 38 | 
            +
                  end
         | 
| 39 | 
            +
                else
         | 
| 40 | 
            +
                  say "A version argument is required: #{usage}"
         | 
| 41 | 
            +
                  terminate_interaction
         | 
| 42 | 
            +
                end
         | 
| 43 | 
            +
              end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
              def yank_gem(version)
         | 
| 46 | 
            +
                say "Yanking gem from RubyGems.org..."
         | 
| 47 | 
            +
                yank_api_request(:delete, version, "api/v1/gems/yank")
         | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
              
         | 
| 50 | 
            +
              def unyank_gem(version)
         | 
| 51 | 
            +
                say "Unyanking gem from RubyGems.org..."
         | 
| 52 | 
            +
                yank_api_request(:put, version, "api/v1/gems/unyank")
         | 
| 53 | 
            +
              end
         | 
| 54 | 
            +
              
         | 
| 55 | 
            +
              private
         | 
| 56 | 
            +
                def yank_api_request(method, version, api)
         | 
| 57 | 
            +
                  name = get_one_gem_name
         | 
| 58 | 
            +
                  response = rubygems_api_request(method, api) do |request|
         | 
| 59 | 
            +
                    request.add_field("Authorization", Gem.configuration.rubygems_api_key)
         | 
| 60 | 
            +
                    request.set_form_data({'gem_name' => name, 'version' => version})
         | 
| 61 | 
            +
                  end
         | 
| 62 | 
            +
                  say response.body
         | 
| 63 | 
            +
                end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                def get_version_from_requirements(requirements)
         | 
| 66 | 
            +
                  begin
         | 
| 67 | 
            +
                    requirements.requirements.first[1].version
         | 
| 68 | 
            +
                  rescue
         | 
| 69 | 
            +
                    nil
         | 
| 70 | 
            +
                  end
         | 
| 71 | 
            +
                end
         | 
| 72 | 
            +
            end
         | 
    
        data/lib/rubygems_plugin.rb
    CHANGED
    
    | @@ -1 +1,7 @@ | |
| 1 | 
            -
            require  | 
| 1 | 
            +
            require 'rubygems/command_manager'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.3.6')
         | 
| 4 | 
            +
              %w[migrate tumble webhook yank].each do |command|
         | 
| 5 | 
            +
                Gem::CommandManager.instance.register_command command.to_sym
         | 
| 6 | 
            +
              end
         | 
| 7 | 
            +
            end
         | 
| @@ -1,4 +1,5 @@ | |
| 1 1 | 
             
            require 'helper'
         | 
| 2 | 
            +
            require 'lib/rubygems/commands/webhook_command'
         | 
| 2 3 |  | 
| 3 4 | 
             
            class WebhookCommandTest < CommandTest
         | 
| 4 5 | 
             
              context "webhooking" do
         | 
| @@ -71,11 +72,15 @@ class WebhookCommandTest < CommandTest | |
| 71 72 | 
             
                context "listing hooks with some available" do
         | 
| 72 73 | 
             
                  setup do
         | 
| 73 74 | 
             
                    stub_api_key("key")
         | 
| 74 | 
            -
                    stub_request(:get, @api).to_return :body => <<EOF
         | 
| 75 | 
            -
             | 
| 76 | 
            -
             | 
| 77 | 
            -
             | 
| 78 | 
            -
             | 
| 75 | 
            +
                    stub_request(:get, "#{@api}.yaml").to_return :body => <<EOF
         | 
| 76 | 
            +
            ---
         | 
| 77 | 
            +
            foo:
         | 
| 78 | 
            +
            - url: http://foogemhook.com
         | 
| 79 | 
            +
              failure_count: 0
         | 
| 80 | 
            +
            all gems:
         | 
| 81 | 
            +
            - url: http://allgemshook.com
         | 
| 82 | 
            +
              failure_count: 0
         | 
| 83 | 
            +
             | 
| 79 84 | 
             
            EOF
         | 
| 80 85 | 
             
                  end
         | 
| 81 86 |  | 
| @@ -114,9 +119,9 @@ EOF | |
| 114 119 | 
             
                    @command.execute
         | 
| 115 120 |  | 
| 116 121 | 
             
                    # webmock doesn't pass body params on correctly :[
         | 
| 117 | 
            -
                    assert_requested(:get, @api,
         | 
| 122 | 
            +
                    assert_requested(:get, "#{@api}.yaml",
         | 
| 118 123 | 
             
                                     :times => 1)
         | 
| 119 | 
            -
                    assert_requested(:get, @api,
         | 
| 124 | 
            +
                    assert_requested(:get, "#{@api}.yaml",
         | 
| 120 125 | 
             
                                     :headers => { 'Authorization' => 'key' })
         | 
| 121 126 | 
             
                  end
         | 
| 122 127 | 
             
                end
         | 
| @@ -124,7 +129,7 @@ EOF | |
| 124 129 | 
             
                context "listing hooks with none available" do
         | 
| 125 130 | 
             
                  setup do
         | 
| 126 131 | 
             
                    stub_api_key("key")
         | 
| 127 | 
            -
                    stub_request(:get, @api).to_return(:body => "{}")
         | 
| 132 | 
            +
                    stub_request(:get, "#{@api}.yaml").to_return(:body => "{}")
         | 
| 128 133 | 
             
                    @command.handle_options([])
         | 
| 129 134 | 
             
                    @command.execute
         | 
| 130 135 | 
             
                  end
         | 
| @@ -140,7 +145,7 @@ EOF | |
| 140 145 | 
             
                  setup do
         | 
| 141 146 | 
             
                    stub(@command).terminate_interaction
         | 
| 142 147 | 
             
                    stub_api_key("key")
         | 
| 143 | 
            -
                    stub_request(:get, @api).to_return(:body => "fubar")
         | 
| 148 | 
            +
                    stub_request(:get, "#{@api}.yaml").to_return(:body => "fubar")
         | 
| 144 149 | 
             
                    @command.handle_options([])
         | 
| 145 150 | 
             
                    @command.execute
         | 
| 146 151 | 
             
                  end
         | 
| @@ -0,0 +1,85 @@ | |
| 1 | 
            +
            require 'helper'
         | 
| 2 | 
            +
            require 'lib/rubygems/commands/yank_command'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            class YankCommandTest < CommandTest
         | 
| 5 | 
            +
              context "yanking" do
         | 
| 6 | 
            +
                setup do
         | 
| 7 | 
            +
                  @gem = "MyGem"
         | 
| 8 | 
            +
                  @version = '0.1.0'
         | 
| 9 | 
            +
                  @command = Gem::Commands::YankCommand.new
         | 
| 10 | 
            +
                  stub(@command).say
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                %w[-v --version].each do |option|
         | 
| 14 | 
            +
                  should "raise an error with no version with #{option}" do
         | 
| 15 | 
            +
                    assert_raise OptionParser::MissingArgument do
         | 
| 16 | 
            +
                      @command.handle_options([@gem, option])
         | 
| 17 | 
            +
                    end
         | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                context 'yanking a gem' do
         | 
| 22 | 
            +
                  setup do
         | 
| 23 | 
            +
                    stub_api_key("key")
         | 
| 24 | 
            +
                    @api = "https://rubygems.org/api/v1/gems/yank"
         | 
| 25 | 
            +
                    stub_request(:delete, @api).to_return(:body => "Successfully yanked")
         | 
| 26 | 
            +
                    @command.handle_options([@gem, "-v", @version])
         | 
| 27 | 
            +
                  end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                  should 'say gem was yanked' do
         | 
| 30 | 
            +
                    @command.execute
         | 
| 31 | 
            +
                    assert_received(@command) do |command|
         | 
| 32 | 
            +
                      command.say("Yanking gem from Gemcutter...")
         | 
| 33 | 
            +
                      command.say("Successfully yanked")
         | 
| 34 | 
            +
                    end
         | 
| 35 | 
            +
                  end
         | 
| 36 | 
            +
                  
         | 
| 37 | 
            +
                  should 'invoke yank_gem' do
         | 
| 38 | 
            +
                    stub(@command).yank_gem(@version)
         | 
| 39 | 
            +
                    @command.execute
         | 
| 40 | 
            +
                    assert_received(@command) do |command|
         | 
| 41 | 
            +
                      command.yank_gem(@version)
         | 
| 42 | 
            +
                    end
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                  should 'delete to api' do
         | 
| 46 | 
            +
                    @command.execute
         | 
| 47 | 
            +
                    assert_requested(:delete, @api,
         | 
| 48 | 
            +
                                     :times => 1)
         | 
| 49 | 
            +
                    assert_requested(:delete, @api,
         | 
| 50 | 
            +
                                     :headers => { 'Authorization' => 'key' })
         | 
| 51 | 
            +
                  end
         | 
| 52 | 
            +
                end
         | 
| 53 | 
            +
                
         | 
| 54 | 
            +
                context 'unyanking a gem' do
         | 
| 55 | 
            +
                  setup do
         | 
| 56 | 
            +
                    stub_api_key("key")
         | 
| 57 | 
            +
                    @api = "https://rubygems.org/api/v1/gems/unyank"
         | 
| 58 | 
            +
                    stub_request(:put, @api).to_return(:body => "Successfully unyanked")
         | 
| 59 | 
            +
                    @command.handle_options([@gem, "-v", @version, "--undo"])
         | 
| 60 | 
            +
                  end
         | 
| 61 | 
            +
                  
         | 
| 62 | 
            +
                  should 'say gem was unyanked' do
         | 
| 63 | 
            +
                    @command.execute
         | 
| 64 | 
            +
                    assert_received(@command) do |command|
         | 
| 65 | 
            +
                      command.say("Re-indexing gem")
         | 
| 66 | 
            +
                      command.say("Successfully unyanked")
         | 
| 67 | 
            +
                    end
         | 
| 68 | 
            +
                  end
         | 
| 69 | 
            +
             | 
| 70 | 
            +
                  should 'invoke unyank_gem' do
         | 
| 71 | 
            +
                    stub(@command).unyank_gem(@version)
         | 
| 72 | 
            +
                    @command.execute
         | 
| 73 | 
            +
                    assert_received(@command) do |command|
         | 
| 74 | 
            +
                      command.unyank_gem(@version)
         | 
| 75 | 
            +
                    end
         | 
| 76 | 
            +
                  end
         | 
| 77 | 
            +
                  
         | 
| 78 | 
            +
                  should 'put to api' do
         | 
| 79 | 
            +
                    @command.execute
         | 
| 80 | 
            +
                    assert_requested(:put, @api, :times => 1)
         | 
| 81 | 
            +
                    assert_requested(:put, @api, :headers => { 'Authorization' => 'key' })
         | 
| 82 | 
            +
                  end
         | 
| 83 | 
            +
                end
         | 
| 84 | 
            +
              end
         | 
| 85 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,12 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: gemcutter
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            +
              hash: 7
         | 
| 4 5 | 
             
              prerelease: false
         | 
| 5 6 | 
             
              segments: 
         | 
| 6 7 | 
             
              - 0
         | 
| 7 | 
            -
              -  | 
| 8 | 
            -
              -  | 
| 9 | 
            -
              version: 0. | 
| 8 | 
            +
              - 6
         | 
| 9 | 
            +
              - 0
         | 
| 10 | 
            +
              version: 0.6.0
         | 
| 10 11 | 
             
            platform: ruby
         | 
| 11 12 | 
             
            authors: 
         | 
| 12 13 | 
             
            - Nick Quaranto
         | 
| @@ -14,81 +15,79 @@ autorequire: | |
| 14 15 | 
             
            bindir: bin
         | 
| 15 16 | 
             
            cert_chain: []
         | 
| 16 17 |  | 
| 17 | 
            -
            date: 2010- | 
| 18 | 
            +
            date: 2010-07-17 00:00:00 -05:00
         | 
| 18 19 | 
             
            default_executable: 
         | 
| 19 20 | 
             
            dependencies: 
         | 
| 20 21 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 21 | 
            -
              name:  | 
| 22 | 
            +
              name: rake
         | 
| 22 23 | 
             
              prerelease: false
         | 
| 23 24 | 
             
              requirement: &id001 !ruby/object:Gem::Requirement 
         | 
| 25 | 
            +
                none: false
         | 
| 24 26 | 
             
                requirements: 
         | 
| 25 27 | 
             
                - - ">="
         | 
| 26 28 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 29 | 
            +
                    hash: 3
         | 
| 27 30 | 
             
                    segments: 
         | 
| 28 31 | 
             
                    - 0
         | 
| 29 32 | 
             
                    version: "0"
         | 
| 30 | 
            -
              type: : | 
| 33 | 
            +
              type: :development
         | 
| 31 34 | 
             
              version_requirements: *id001
         | 
| 32 35 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 33 | 
            -
              name:  | 
| 36 | 
            +
              name: shoulda
         | 
| 34 37 | 
             
              prerelease: false
         | 
| 35 38 | 
             
              requirement: &id002 !ruby/object:Gem::Requirement 
         | 
| 39 | 
            +
                none: false
         | 
| 36 40 | 
             
                requirements: 
         | 
| 37 41 | 
             
                - - ">="
         | 
| 38 42 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 43 | 
            +
                    hash: 3
         | 
| 39 44 | 
             
                    segments: 
         | 
| 40 45 | 
             
                    - 0
         | 
| 41 46 | 
             
                    version: "0"
         | 
| 42 47 | 
             
              type: :development
         | 
| 43 48 | 
             
              version_requirements: *id002
         | 
| 44 49 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 45 | 
            -
              name:  | 
| 50 | 
            +
              name: activesupport
         | 
| 46 51 | 
             
              prerelease: false
         | 
| 47 52 | 
             
              requirement: &id003 !ruby/object:Gem::Requirement 
         | 
| 53 | 
            +
                none: false
         | 
| 48 54 | 
             
                requirements: 
         | 
| 49 55 | 
             
                - - ">="
         | 
| 50 56 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 57 | 
            +
                    hash: 3
         | 
| 51 58 | 
             
                    segments: 
         | 
| 52 59 | 
             
                    - 0
         | 
| 53 60 | 
             
                    version: "0"
         | 
| 54 61 | 
             
              type: :development
         | 
| 55 62 | 
             
              version_requirements: *id003
         | 
| 56 63 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 57 | 
            -
              name:  | 
| 64 | 
            +
              name: webmock
         | 
| 58 65 | 
             
              prerelease: false
         | 
| 59 66 | 
             
              requirement: &id004 !ruby/object:Gem::Requirement 
         | 
| 67 | 
            +
                none: false
         | 
| 60 68 | 
             
                requirements: 
         | 
| 61 69 | 
             
                - - ">="
         | 
| 62 70 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 71 | 
            +
                    hash: 3
         | 
| 63 72 | 
             
                    segments: 
         | 
| 64 73 | 
             
                    - 0
         | 
| 65 74 | 
             
                    version: "0"
         | 
| 66 75 | 
             
              type: :development
         | 
| 67 76 | 
             
              version_requirements: *id004
         | 
| 68 77 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 69 | 
            -
              name:  | 
| 78 | 
            +
              name: rr
         | 
| 70 79 | 
             
              prerelease: false
         | 
| 71 80 | 
             
              requirement: &id005 !ruby/object:Gem::Requirement 
         | 
| 81 | 
            +
                none: false
         | 
| 72 82 | 
             
                requirements: 
         | 
| 73 83 | 
             
                - - ">="
         | 
| 74 84 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 85 | 
            +
                    hash: 3
         | 
| 75 86 | 
             
                    segments: 
         | 
| 76 87 | 
             
                    - 0
         | 
| 77 88 | 
             
                    version: "0"
         | 
| 78 89 | 
             
              type: :development
         | 
| 79 90 | 
             
              version_requirements: *id005
         | 
| 80 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 81 | 
            -
              name: rr
         | 
| 82 | 
            -
              prerelease: false
         | 
| 83 | 
            -
              requirement: &id006 !ruby/object:Gem::Requirement 
         | 
| 84 | 
            -
                requirements: 
         | 
| 85 | 
            -
                - - ">="
         | 
| 86 | 
            -
                  - !ruby/object:Gem::Version 
         | 
| 87 | 
            -
                    segments: 
         | 
| 88 | 
            -
                    - 0
         | 
| 89 | 
            -
                    version: "0"
         | 
| 90 | 
            -
              type: :development
         | 
| 91 | 
            -
              version_requirements: *id006
         | 
| 92 91 | 
             
            description: Adds several commands to RubyGems for managing gems and more on RubyGems.org.
         | 
| 93 92 | 
             
            email: nick@quaran.to
         | 
| 94 93 | 
             
            executables: []
         | 
| @@ -100,12 +99,13 @@ extra_rdoc_files: [] | |
| 100 99 | 
             
            files: 
         | 
| 101 100 | 
             
            - MIT-LICENSE
         | 
| 102 101 | 
             
            - Rakefile
         | 
| 103 | 
            -
            - lib/ | 
| 104 | 
            -
            - lib/rubygems/commands/ | 
| 105 | 
            -
            - lib/rubygems/commands/ | 
| 106 | 
            -
            - lib/rubygems/commands/ | 
| 102 | 
            +
            - lib/rubygems/commands/migrate_command.rb
         | 
| 103 | 
            +
            - lib/rubygems/commands/tumble_command.rb
         | 
| 104 | 
            +
            - lib/rubygems/commands/webhook_command.rb
         | 
| 105 | 
            +
            - lib/rubygems/commands/yank_command.rb
         | 
| 107 106 | 
             
            - lib/rubygems_plugin.rb
         | 
| 108 107 | 
             
            - test/webhook_command_test.rb
         | 
| 108 | 
            +
            - test/yank_command_test.rb
         | 
| 109 109 | 
             
            has_rdoc: true
         | 
| 110 110 | 
             
            homepage: http://rubygems.org
         | 
| 111 111 | 
             
            licenses: []
         | 
| @@ -116,9 +116,10 @@ post_install_message: |+ | |
| 116 116 |  | 
| 117 117 | 
             
                         Thanks for installing Gemcutter! You can now run:
         | 
| 118 118 |  | 
| 119 | 
            -
             | 
| 120 | 
            -
             | 
| 121 | 
            -
             | 
| 119 | 
            +
                gem push        merged into RubyGems 1.3.6
         | 
| 120 | 
            +
                gem owner       merged into RubyGems 1.3.6
         | 
| 121 | 
            +
                gem webhook     register urls to be pinged when gems are pushed
         | 
| 122 | 
            +
                gem yank        remove a specific version of a gem from RubyGems.org
         | 
| 122 123 |  | 
| 123 124 | 
             
              ========================================================================
         | 
| 124 125 |  | 
| @@ -127,23 +128,27 @@ rdoc_options: | |
| 127 128 | 
             
            require_paths: 
         | 
| 128 129 | 
             
            - lib
         | 
| 129 130 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement 
         | 
| 131 | 
            +
              none: false
         | 
| 130 132 | 
             
              requirements: 
         | 
| 131 133 | 
             
              - - ">="
         | 
| 132 134 | 
             
                - !ruby/object:Gem::Version 
         | 
| 135 | 
            +
                  hash: 3
         | 
| 133 136 | 
             
                  segments: 
         | 
| 134 137 | 
             
                  - 0
         | 
| 135 138 | 
             
                  version: "0"
         | 
| 136 139 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement 
         | 
| 140 | 
            +
              none: false
         | 
| 137 141 | 
             
              requirements: 
         | 
| 138 142 | 
             
              - - ">="
         | 
| 139 143 | 
             
                - !ruby/object:Gem::Version 
         | 
| 144 | 
            +
                  hash: 3
         | 
| 140 145 | 
             
                  segments: 
         | 
| 141 146 | 
             
                  - 0
         | 
| 142 147 | 
             
                  version: "0"
         | 
| 143 148 | 
             
            requirements: []
         | 
| 144 149 |  | 
| 145 150 | 
             
            rubyforge_project: 
         | 
| 146 | 
            -
            rubygems_version: 1.3. | 
| 151 | 
            +
            rubygems_version: 1.3.7
         | 
| 147 152 | 
             
            signing_key: 
         | 
| 148 153 | 
             
            specification_version: 3
         | 
| 149 154 | 
             
            summary: Commands to interact with RubyGems.org
         |