rake-gemcutter 0.0.2 → 0.1.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/doc/Specifications +5 -2
- data/lib/rake/gemcutter.rb +23 -21
- data/spec/gemcutter.rb +48 -0
- data/spec_help/gem_test_suite.rb +17 -0
- metadata +10 -16
data/doc/Specifications
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
|
2
2
|
Rake::Gemcutter::Tasks
|
3
3
|
- should define gem:push
|
4
|
+
- should successfully push the gem
|
5
|
+
- should check for gem requirements
|
6
|
+
- should fail if gem requirements are missing
|
4
7
|
|
5
|
-
Finished in
|
8
|
+
Finished in 73.925493 seconds
|
6
9
|
|
7
|
-
|
10
|
+
4 examples, 0 failures
|
data/lib/rake/gemcutter.rb
CHANGED
@@ -1,26 +1,12 @@
|
|
1
1
|
require 'rake'
|
2
2
|
require 'rake/tasklib'
|
3
|
-
require 'commands/abstract_command'
|
4
3
|
|
5
|
-
module Rake::Gemcutter
|
6
|
-
class GemcutterCommands < ::Gem::AbstractCommand
|
7
|
-
def initialize
|
8
|
-
end
|
9
4
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
response = make_request(:post, "gems") do |request|
|
14
|
-
request.body = File.open(gem_path){|io| io.read }
|
15
|
-
request.add_field("Content-Length", request.body.size)
|
16
|
-
request.add_field("Content-Type", "application/octet-stream")
|
17
|
-
request.add_field("Authorization", api_key)
|
18
|
-
end
|
19
|
-
|
20
|
-
puts response.body
|
21
|
-
end
|
22
|
-
end
|
5
|
+
module Gem::Commands
|
6
|
+
autoload("PushCommand", "rubygems/commands/push_command")
|
7
|
+
end
|
23
8
|
|
9
|
+
module Rake::Gemcutter
|
24
10
|
class Tasks < ::Rake::TaskLib
|
25
11
|
def initialize(gem_spec)
|
26
12
|
@gem_spec = gem_spec
|
@@ -46,6 +32,20 @@ module Rake::Gemcutter
|
|
46
32
|
end
|
47
33
|
end
|
48
34
|
|
35
|
+
module CommandTweaks
|
36
|
+
def setup_args(args = nil)
|
37
|
+
args ||= []
|
38
|
+
handle_options(args)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def get_command(klass, args=nil)
|
43
|
+
cmd = klass.new
|
44
|
+
cmd.extend(CommandTweaks)
|
45
|
+
cmd.setup_args(args)
|
46
|
+
cmd
|
47
|
+
end
|
48
|
+
|
49
49
|
def define
|
50
50
|
namespace :gem do
|
51
51
|
desc "Uninstall the gem"
|
@@ -63,7 +63,8 @@ module Rake::Gemcutter
|
|
63
63
|
task :install => [@gem_path] do |t|
|
64
64
|
when_writing("Installing #{@gem_path}") do
|
65
65
|
puts "Installing #{@gem_path}"
|
66
|
-
system(*%w{sudo gem install} + [@gem_path] )
|
66
|
+
system(*%w{sudo gem install} + [@gem_path] ) #Wish I could do this without
|
67
|
+
#resorting to the command line
|
67
68
|
end
|
68
69
|
end
|
69
70
|
|
@@ -84,8 +85,9 @@ module Rake::Gemcutter
|
|
84
85
|
|
85
86
|
desc 'Push a gem up to Gemcutter'
|
86
87
|
task :push => [:dependencies_available] do
|
87
|
-
|
88
|
-
|
88
|
+
push = get_command(Gem::Commands::PushCommand)
|
89
|
+
push.options[:args] = [@gem_path]
|
90
|
+
push.execute
|
89
91
|
end
|
90
92
|
end
|
91
93
|
end
|
data/spec/gemcutter.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'rake/gemcutter'
|
2
|
+
require 'rubygems/gemcutter_utilities'
|
3
|
+
require 'rubygems/user_interaction'
|
4
|
+
|
5
|
+
$said = []
|
6
|
+
|
7
|
+
module Gem::UserInteraction
|
8
|
+
def say(string)
|
9
|
+
$said << string
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
module Gem::GemcutterUtilities
|
14
|
+
FakeRequest = Struct.new(:body)
|
15
|
+
|
16
|
+
def rubygems_api_request(*args)
|
17
|
+
return FakeRequest.new("Fake Request! Ha!")
|
18
|
+
end
|
19
|
+
|
20
|
+
def with_response(resp)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe Rake::Gemcutter::Tasks do
|
25
|
+
before do
|
26
|
+
@spec = Gem::Specification.new
|
27
|
+
@tasks = Rake::Gemcutter::Tasks.new(@spec)
|
28
|
+
end
|
29
|
+
it "should define gem:push" do
|
30
|
+
Rake::Task['gem:push'].should_not be_nil
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should successfully push the gem" do
|
34
|
+
Rake::Task['gem:push'].execute.should be_true
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should check for gem requirements" do
|
38
|
+
@spec.add_dependency("rspec")
|
39
|
+
Rake::Task['gem:dependencies_available'].execute.should be_true
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should fail if gem requirements are missing" do
|
43
|
+
@spec.add_dependency("True Love")
|
44
|
+
expect do
|
45
|
+
Rake::Task['gem:dependencies_available'].execute
|
46
|
+
end.to raise_error
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
puts Dir::pwd
|
2
|
+
require 'test/unit'
|
3
|
+
begin
|
4
|
+
require 'spec'
|
5
|
+
rescue LoadError
|
6
|
+
false
|
7
|
+
end
|
8
|
+
|
9
|
+
class RSpecTest < Test::Unit::TestCase
|
10
|
+
def test_that_rspec_is_available
|
11
|
+
assert_nothing_raised("\n\n * RSpec isn't available - please run: gem install rspec *\n\n"){ ::Spec }
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_that_specs_pass
|
15
|
+
assert(system(*%w{spec -f e -p **/*.rb spec}),"\n\n * Specs failed *\n\n")
|
16
|
+
end
|
17
|
+
end
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
+
- 1
|
7
8
|
- 0
|
8
|
-
|
9
|
-
version: 0.0.2
|
9
|
+
version: 0.1.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Judson Lester
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-03-
|
17
|
+
date: 2010-03-24 00:00:00 -07:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -36,14 +36,7 @@ dependencies:
|
|
36
36
|
prerelease: false
|
37
37
|
requirement: &id002 !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- - "
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
segments:
|
42
|
-
- 0
|
43
|
-
- 2
|
44
|
-
- 1
|
45
|
-
version: 0.2.1
|
46
|
-
- - <
|
39
|
+
- - "="
|
47
40
|
- !ruby/object:Gem::Version
|
48
41
|
segments:
|
49
42
|
- 0
|
@@ -53,7 +46,7 @@ dependencies:
|
|
53
46
|
type: :runtime
|
54
47
|
version_requirements: *id002
|
55
48
|
description: " Tasks for gemcutter, including gemcutter-push\n"
|
56
|
-
email:
|
49
|
+
email: nyarly@gmail.com
|
57
50
|
executables: []
|
58
51
|
|
59
52
|
extensions: []
|
@@ -65,6 +58,7 @@ files:
|
|
65
58
|
- lib/rake/gemcutter.rb
|
66
59
|
- doc/README
|
67
60
|
- doc/Specifications
|
61
|
+
- spec/gemcutter.rb
|
68
62
|
has_rdoc: true
|
69
63
|
homepage: http://rake-gemcutter.rubyforge.org/
|
70
64
|
licenses: []
|
@@ -75,7 +69,7 @@ rdoc_options:
|
|
75
69
|
- --main
|
76
70
|
- doc/README
|
77
71
|
- --title
|
78
|
-
- rake-gemcutter-0.0
|
72
|
+
- rake-gemcutter-0.1.0 RDoc
|
79
73
|
require_paths:
|
80
74
|
- lib
|
81
75
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -87,7 +81,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
87
81
|
version: "0"
|
88
82
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
83
|
requirements:
|
90
|
-
- -
|
84
|
+
- - "="
|
91
85
|
- !ruby/object:Gem::Version
|
92
86
|
segments:
|
93
87
|
- 1
|
@@ -101,5 +95,5 @@ rubygems_version: 1.3.6
|
|
101
95
|
signing_key:
|
102
96
|
specification_version: 3
|
103
97
|
summary: Rake tasks for gemcutter
|
104
|
-
test_files:
|
105
|
-
|
98
|
+
test_files:
|
99
|
+
- spec_help/gem_test_suite.rb
|