gemcutter 0.6.1 → 0.7.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 +0 -41
- data/lib/rubygems/commands/yank_command.rb +17 -10
- data/test/helper.rb +3 -2
- data/test/yank_command_test.rb +65 -8
- metadata +9 -9
data/Rakefile
CHANGED
@@ -8,44 +8,3 @@ Rake::TestTask.new(:test) do |t|
|
|
8
8
|
t.test_files = FileList['test/*_test.rb']
|
9
9
|
t.verbose = true
|
10
10
|
end
|
11
|
-
|
12
|
-
begin
|
13
|
-
require 'jeweler'
|
14
|
-
Jeweler::Tasks.new do |gem|
|
15
|
-
gem.name = "gemcutter"
|
16
|
-
gem.version = "0.6.1"
|
17
|
-
gem.summary = "Commands to interact with RubyGems.org"
|
18
|
-
gem.description = "Adds several commands to RubyGems for managing gems and more on RubyGems.org."
|
19
|
-
gem.email = "nick@quaran.to"
|
20
|
-
gem.homepage = "http://rubygems.org"
|
21
|
-
gem.authors = ["Nick Quaranto"]
|
22
|
-
gem.files = FileList["lib/rubygems_plugin.rb",
|
23
|
-
"lib/rubygems/commands/*",
|
24
|
-
"test/helper.rb",
|
25
|
-
"test/*_test.rb",
|
26
|
-
"MIT-LICENSE",
|
27
|
-
"Rakefile"]
|
28
|
-
gem.test_files = []
|
29
|
-
gem.executables = []
|
30
|
-
%w[rake shoulda activesupport webmock rr].each do |dep|
|
31
|
-
gem.add_development_dependency(dep)
|
32
|
-
end
|
33
|
-
gem.post_install_message = <<MESSAGE
|
34
|
-
|
35
|
-
========================================================================
|
36
|
-
|
37
|
-
Thanks for installing Gemcutter! You can now run:
|
38
|
-
|
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
|
43
|
-
|
44
|
-
========================================================================
|
45
|
-
|
46
|
-
MESSAGE
|
47
|
-
end
|
48
|
-
Jeweler::RubyforgeTasks.new
|
49
|
-
rescue LoadError
|
50
|
-
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
51
|
-
end
|
@@ -16,12 +16,13 @@ class Gem::Commands::YankCommand < Gem::Command
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def usage
|
19
|
-
"#{program_name} GEM -v VERSION [--undo]"
|
19
|
+
"#{program_name} GEM -v VERSION [-p PLATFORM] [--undo]"
|
20
20
|
end
|
21
21
|
|
22
22
|
def initialize
|
23
23
|
super 'yank', description
|
24
24
|
add_version_option("remove")
|
25
|
+
add_platform_option("remove")
|
25
26
|
add_option('--undo') do |value, options|
|
26
27
|
options[:undo] = true
|
27
28
|
end
|
@@ -29,12 +30,14 @@ class Gem::Commands::YankCommand < Gem::Command
|
|
29
30
|
|
30
31
|
def execute
|
31
32
|
sign_in
|
32
|
-
version
|
33
|
+
version = get_version_from_requirements(options[:version])
|
34
|
+
platform = get_platform_from_requirements(options)
|
35
|
+
|
33
36
|
if !version.nil?
|
34
37
|
if options[:undo]
|
35
|
-
unyank_gem(version)
|
38
|
+
unyank_gem(version, platform)
|
36
39
|
else
|
37
|
-
yank_gem(version)
|
40
|
+
yank_gem(version, platform)
|
38
41
|
end
|
39
42
|
else
|
40
43
|
say "A version argument is required: #{usage}"
|
@@ -42,22 +45,22 @@ class Gem::Commands::YankCommand < Gem::Command
|
|
42
45
|
end
|
43
46
|
end
|
44
47
|
|
45
|
-
def yank_gem(version)
|
48
|
+
def yank_gem(version, platform)
|
46
49
|
say "Yanking gem from RubyGems.org..."
|
47
|
-
yank_api_request(:delete, version, "api/v1/gems/yank")
|
50
|
+
yank_api_request(:delete, version, platform, "api/v1/gems/yank")
|
48
51
|
end
|
49
52
|
|
50
|
-
def unyank_gem(version)
|
53
|
+
def unyank_gem(version, platform)
|
51
54
|
say "Unyanking gem from RubyGems.org..."
|
52
|
-
yank_api_request(:put, version, "api/v1/gems/unyank")
|
55
|
+
yank_api_request(:put, version, platform, "api/v1/gems/unyank")
|
53
56
|
end
|
54
57
|
|
55
58
|
private
|
56
|
-
def yank_api_request(method, version, api)
|
59
|
+
def yank_api_request(method, version, platform, api)
|
57
60
|
name = get_one_gem_name
|
58
61
|
response = rubygems_api_request(method, api) do |request|
|
59
62
|
request.add_field("Authorization", Gem.configuration.rubygems_api_key)
|
60
|
-
request.set_form_data({'gem_name' => name, 'version' => version})
|
63
|
+
request.set_form_data({'gem_name' => name, 'version' => version, 'platform' => platform})
|
61
64
|
end
|
62
65
|
say response.body
|
63
66
|
end
|
@@ -69,4 +72,8 @@ class Gem::Commands::YankCommand < Gem::Command
|
|
69
72
|
nil
|
70
73
|
end
|
71
74
|
end
|
75
|
+
|
76
|
+
def get_platform_from_requirements(requirements)
|
77
|
+
Gem.platforms[1].to_s if requirements.key? :added_platform
|
78
|
+
end
|
72
79
|
end
|
data/test/helper.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'rubygems'
|
2
|
+
require 'rubygems/command'
|
2
3
|
require 'test/unit'
|
3
4
|
|
4
5
|
require 'shoulda'
|
@@ -16,10 +17,10 @@ WebMock.disable_net_connect!
|
|
16
17
|
|
17
18
|
class CommandTest < ActiveSupport::TestCase
|
18
19
|
include RR::Adapters::TestUnit unless include?(RR::Adapters::TestUnit)
|
19
|
-
include WebMock
|
20
|
+
include WebMock::API
|
20
21
|
|
21
22
|
def teardown
|
22
|
-
|
23
|
+
WebMock.reset!
|
23
24
|
end
|
24
25
|
end
|
25
26
|
|
data/test/yank_command_test.rb
CHANGED
@@ -4,13 +4,14 @@ require 'lib/rubygems/commands/yank_command'
|
|
4
4
|
class YankCommandTest < CommandTest
|
5
5
|
context "yanking" do
|
6
6
|
setup do
|
7
|
-
@gem
|
8
|
-
@version
|
9
|
-
@
|
7
|
+
@gem = "MyGem"
|
8
|
+
@version = '0.1.0'
|
9
|
+
@platform = nil
|
10
|
+
@command = Gem::Commands::YankCommand.new
|
10
11
|
stub(@command).say
|
11
12
|
end
|
12
13
|
|
13
|
-
%w[-v --version].each do |option|
|
14
|
+
%w[-v --version -p --platform].each do |option|
|
14
15
|
should "raise an error with no version with #{option}" do
|
15
16
|
assert_raise OptionParser::MissingArgument do
|
16
17
|
@command.handle_options([@gem, option])
|
@@ -35,10 +36,10 @@ class YankCommandTest < CommandTest
|
|
35
36
|
end
|
36
37
|
|
37
38
|
should 'invoke yank_gem' do
|
38
|
-
stub(@command).yank_gem(@version)
|
39
|
+
stub(@command).yank_gem(@version, @platform)
|
39
40
|
@command.execute
|
40
41
|
assert_received(@command) do |command|
|
41
|
-
command.yank_gem(@version)
|
42
|
+
command.yank_gem(@version, @platform)
|
42
43
|
end
|
43
44
|
end
|
44
45
|
|
@@ -49,6 +50,33 @@ class YankCommandTest < CommandTest
|
|
49
50
|
assert_requested(:delete, @api,
|
50
51
|
:headers => { 'Authorization' => 'key' })
|
51
52
|
end
|
53
|
+
|
54
|
+
context 'with a platform specified' do
|
55
|
+
setup do
|
56
|
+
stub_api_key("key")
|
57
|
+
@api = "https://rubygems.org/api/v1/gems/yank"
|
58
|
+
@platform = "x86-darwin-10"
|
59
|
+
stub_request(:delete, @api).to_return(:body => "Successfully yanked")
|
60
|
+
@command.handle_options([@gem, "-v", @version, "-p", @platform])
|
61
|
+
end
|
62
|
+
|
63
|
+
should 'say gem was yanked' do
|
64
|
+
@command.execute
|
65
|
+
assert_received(@command) do |command|
|
66
|
+
command.say("Yanking gem from Gemcutter...")
|
67
|
+
command.say("Successfully yanked")
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
should 'invoke yank_gem' do
|
72
|
+
stub(@command).yank_gem(@version, @platform)
|
73
|
+
@command.execute
|
74
|
+
assert_received(@command) do |command|
|
75
|
+
command.yank_gem(@version, @platform)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
52
80
|
end
|
53
81
|
|
54
82
|
context 'unyanking a gem' do
|
@@ -68,10 +96,10 @@ class YankCommandTest < CommandTest
|
|
68
96
|
end
|
69
97
|
|
70
98
|
should 'invoke unyank_gem' do
|
71
|
-
stub(@command).unyank_gem(@version)
|
99
|
+
stub(@command).unyank_gem(@version, @platform)
|
72
100
|
@command.execute
|
73
101
|
assert_received(@command) do |command|
|
74
|
-
command.unyank_gem(@version)
|
102
|
+
command.unyank_gem(@version, @platform)
|
75
103
|
end
|
76
104
|
end
|
77
105
|
|
@@ -81,5 +109,34 @@ class YankCommandTest < CommandTest
|
|
81
109
|
assert_requested(:put, @api, :headers => { 'Authorization' => 'key' })
|
82
110
|
end
|
83
111
|
end
|
112
|
+
|
113
|
+
|
114
|
+
context 'with a platform specified' do
|
115
|
+
setup do
|
116
|
+
stub_api_key("key")
|
117
|
+
@api = "https://rubygems.org/api/v1/gems/unyank"
|
118
|
+
@platform = "x86-darwin-10"
|
119
|
+
stub_request(:put, @api).to_return(:body => "Successfully unyanked")
|
120
|
+
@command.handle_options([@gem, "-v", @version, "-p", @platform, "--undo"])
|
121
|
+
end
|
122
|
+
|
123
|
+
should 'say gem was unyanked' do
|
124
|
+
@command.execute
|
125
|
+
assert_received(@command) do |command|
|
126
|
+
command.say("Re-indexing gem")
|
127
|
+
command.say("Successfully unyanked")
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
should 'invoke unyank_gem' do
|
132
|
+
stub(@command).unyank_gem(@version, @platform)
|
133
|
+
@command.execute
|
134
|
+
assert_received(@command) do |command|
|
135
|
+
command.unyank_gem(@version, @platform)
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
84
140
|
end
|
141
|
+
|
85
142
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gemcutter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 3
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 7
|
9
|
+
- 0
|
10
|
+
version: 0.7.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Nick Quaranto
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2011-02-26 00:00:00 -08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -124,8 +124,8 @@ post_install_message: |+
|
|
124
124
|
|
125
125
|
========================================================================
|
126
126
|
|
127
|
-
rdoc_options:
|
128
|
-
|
127
|
+
rdoc_options: []
|
128
|
+
|
129
129
|
require_paths:
|
130
130
|
- lib
|
131
131
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -149,7 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
149
149
|
requirements: []
|
150
150
|
|
151
151
|
rubyforge_project:
|
152
|
-
rubygems_version: 1.
|
152
|
+
rubygems_version: 1.5.2
|
153
153
|
signing_key:
|
154
154
|
specification_version: 3
|
155
155
|
summary: Commands to interact with RubyGems.org
|