kumade 0.3.0 → 0.4.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/.travis.yml +0 -1
- data/README.md +19 -21
- data/bin/kumade +1 -1
- data/kumade.gemspec +2 -0
- data/lib/kumade.rb +16 -10
- data/lib/kumade/base.rb +14 -9
- data/lib/kumade/cli.rb +86 -0
- data/lib/kumade/configuration.rb +14 -0
- data/lib/kumade/deployer.rb +27 -128
- data/lib/kumade/git.rb +11 -12
- data/lib/kumade/heroku.rb +46 -0
- data/lib/kumade/packager.rb +94 -0
- data/lib/kumade/version.rb +1 -1
- data/lib/tasks/deploy.rake +1 -1
- data/spec/kumade/base_spec.rb +89 -8
- data/spec/kumade/cli_spec.rb +109 -0
- data/spec/kumade/configuration_spec.rb +36 -0
- data/spec/kumade/deployer_spec.rb +45 -415
- data/spec/kumade/git_spec.rb +88 -21
- data/spec/kumade/heroku_spec.rb +121 -0
- data/spec/kumade/packager_spec.rb +318 -0
- data/spec/kumade_spec.rb +18 -0
- data/spec/spec_helper.rb +19 -3
- data/spec/support/heroku.rb +33 -0
- metadata +63 -22
- data/lib/kumade/runner.rb +0 -70
- data/spec/kumade/runner_spec.rb +0 -66
data/spec/kumade_spec.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Kumade, ".configuration" do
|
4
|
+
it "returns a Kumade::Configuration instance" do
|
5
|
+
Kumade.configuration.should be_a Kumade::Configuration
|
6
|
+
end
|
7
|
+
|
8
|
+
it "caches the configuration" do
|
9
|
+
Kumade.configuration.should eq Kumade.configuration
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe Kumade, ".configuration=" do
|
14
|
+
it "sets Kumade.configuration" do
|
15
|
+
Kumade.configuration = "new-value"
|
16
|
+
Kumade.configuration.should == "new-value"
|
17
|
+
end
|
18
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,8 +1,12 @@
|
|
1
1
|
require 'rspec'
|
2
|
+
require 'aruba/api'
|
3
|
+
require 'bourne'
|
4
|
+
|
2
5
|
require 'kumade'
|
6
|
+
|
7
|
+
# Since we autoload, these aren't require'd when we require kumade.
|
3
8
|
require 'rake'
|
4
|
-
require '
|
5
|
-
require 'aruba/api'
|
9
|
+
require 'cocaine'
|
6
10
|
|
7
11
|
module GitRemoteHelpers
|
8
12
|
def force_add_heroku_remote(remote_name)
|
@@ -15,8 +19,16 @@ module GitRemoteHelpers
|
|
15
19
|
end
|
16
20
|
end
|
17
21
|
|
22
|
+
|
23
|
+
spec_dir = Pathname.new(File.expand_path(File.dirname(__FILE__)))
|
24
|
+
Dir[spec_dir.join('support', '**')].each {|f| require File.expand_path(f) }
|
25
|
+
|
18
26
|
RSpec.configure do |config|
|
19
|
-
config.
|
27
|
+
config.mock_with :mocha
|
28
|
+
config.color_enabled = true
|
29
|
+
|
30
|
+
config.include Rake::DSL if defined?(Rake::DSL)
|
31
|
+
|
20
32
|
config.include GitRemoteHelpers
|
21
33
|
config.include Aruba::Api
|
22
34
|
|
@@ -31,4 +43,8 @@ RSpec.configure do |config|
|
|
31
43
|
example.run
|
32
44
|
end
|
33
45
|
end
|
46
|
+
|
47
|
+
config.after do
|
48
|
+
Kumade.configuration = Kumade::Configuration.new
|
49
|
+
end
|
34
50
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
shared_context "when on Cedar" do
|
2
|
+
let(:command_line) { mock("Cocaine::CommandLine") }
|
3
|
+
|
4
|
+
before do
|
5
|
+
Cocaine::CommandLine.expects(:new).
|
6
|
+
with("bundle exec heroku stack --remote staging").
|
7
|
+
returns(command_line)
|
8
|
+
|
9
|
+
command_line.expects(:run).returns(%{
|
10
|
+
aspen-mri-1.8.6
|
11
|
+
bamboo-mri-1.9.2
|
12
|
+
bamboo-ree-1.8.7
|
13
|
+
* cedar (beta)
|
14
|
+
})
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
shared_context "when not on Cedar" do
|
19
|
+
let(:command_line) { mock("Cocaine::CommandLine") }
|
20
|
+
|
21
|
+
before do
|
22
|
+
Cocaine::CommandLine.expects(:new).
|
23
|
+
with("bundle exec heroku stack --remote staging").
|
24
|
+
returns(command_line)
|
25
|
+
|
26
|
+
command_line.expects(:run).returns(%{
|
27
|
+
aspen-mri-1.8.6
|
28
|
+
* bamboo-mri-1.9.2
|
29
|
+
bamboo-ree-1.8.7
|
30
|
+
cedar (beta)
|
31
|
+
})
|
32
|
+
end
|
33
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kumade
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2011-09-
|
13
|
+
date: 2011-09-14 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: heroku
|
17
|
-
requirement: &
|
17
|
+
requirement: &2154315660 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: '2.0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *2154315660
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: thor
|
28
|
-
requirement: &
|
28
|
+
requirement: &2154315160 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: '0.14'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *2154315160
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: rake
|
39
|
-
requirement: &
|
39
|
+
requirement: &2154314700 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,21 @@ dependencies:
|
|
44
44
|
version: 0.8.7
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *2154314700
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: cocaine
|
50
|
+
requirement: &2154314240 !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 0.2.0
|
56
|
+
type: :runtime
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: *2154314240
|
48
59
|
- !ruby/object:Gem::Dependency
|
49
60
|
name: rake
|
50
|
-
requirement: &
|
61
|
+
requirement: &2154313780 !ruby/object:Gem::Requirement
|
51
62
|
none: false
|
52
63
|
requirements:
|
53
64
|
- - ! '>='
|
@@ -55,10 +66,10 @@ dependencies:
|
|
55
66
|
version: 0.8.7
|
56
67
|
type: :development
|
57
68
|
prerelease: false
|
58
|
-
version_requirements: *
|
69
|
+
version_requirements: *2154313780
|
59
70
|
- !ruby/object:Gem::Dependency
|
60
71
|
name: rspec
|
61
|
-
requirement: &
|
72
|
+
requirement: &2154313320 !ruby/object:Gem::Requirement
|
62
73
|
none: false
|
63
74
|
requirements:
|
64
75
|
- - ~>
|
@@ -66,10 +77,10 @@ dependencies:
|
|
66
77
|
version: 2.6.0
|
67
78
|
type: :development
|
68
79
|
prerelease: false
|
69
|
-
version_requirements: *
|
80
|
+
version_requirements: *2154313320
|
70
81
|
- !ruby/object:Gem::Dependency
|
71
82
|
name: cucumber
|
72
|
-
requirement: &
|
83
|
+
requirement: &2154312860 !ruby/object:Gem::Requirement
|
73
84
|
none: false
|
74
85
|
requirements:
|
75
86
|
- - ~>
|
@@ -77,10 +88,10 @@ dependencies:
|
|
77
88
|
version: 1.0.2
|
78
89
|
type: :development
|
79
90
|
prerelease: false
|
80
|
-
version_requirements: *
|
91
|
+
version_requirements: *2154312860
|
81
92
|
- !ruby/object:Gem::Dependency
|
82
93
|
name: aruba
|
83
|
-
requirement: &
|
94
|
+
requirement: &2159228600 !ruby/object:Gem::Requirement
|
84
95
|
none: false
|
85
96
|
requirements:
|
86
97
|
- - ~>
|
@@ -88,10 +99,10 @@ dependencies:
|
|
88
99
|
version: 0.4.3
|
89
100
|
type: :development
|
90
101
|
prerelease: false
|
91
|
-
version_requirements: *
|
102
|
+
version_requirements: *2159228600
|
92
103
|
- !ruby/object:Gem::Dependency
|
93
104
|
name: jammit
|
94
|
-
requirement: &
|
105
|
+
requirement: &2159228140 !ruby/object:Gem::Requirement
|
95
106
|
none: false
|
96
107
|
requirements:
|
97
108
|
- - ~>
|
@@ -99,7 +110,18 @@ dependencies:
|
|
99
110
|
version: 0.6.3
|
100
111
|
type: :development
|
101
112
|
prerelease: false
|
102
|
-
version_requirements: *
|
113
|
+
version_requirements: *2159228140
|
114
|
+
- !ruby/object:Gem::Dependency
|
115
|
+
name: bourne
|
116
|
+
requirement: &2159227760 !ruby/object:Gem::Requirement
|
117
|
+
none: false
|
118
|
+
requirements:
|
119
|
+
- - ! '>='
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0'
|
122
|
+
type: :development
|
123
|
+
prerelease: false
|
124
|
+
version_requirements: *2159227760
|
103
125
|
description: A well-tested script for easy deploying to Heroku
|
104
126
|
email:
|
105
127
|
- gabe@thoughtbot.com
|
@@ -126,18 +148,26 @@ files:
|
|
126
148
|
- kumade.gemspec
|
127
149
|
- lib/kumade.rb
|
128
150
|
- lib/kumade/base.rb
|
151
|
+
- lib/kumade/cli.rb
|
152
|
+
- lib/kumade/configuration.rb
|
129
153
|
- lib/kumade/deployer.rb
|
130
154
|
- lib/kumade/deployment_error.rb
|
131
155
|
- lib/kumade/git.rb
|
156
|
+
- lib/kumade/heroku.rb
|
157
|
+
- lib/kumade/packager.rb
|
132
158
|
- lib/kumade/railtie.rb
|
133
|
-
- lib/kumade/runner.rb
|
134
159
|
- lib/kumade/version.rb
|
135
160
|
- lib/tasks/deploy.rake
|
136
161
|
- spec/kumade/base_spec.rb
|
162
|
+
- spec/kumade/cli_spec.rb
|
163
|
+
- spec/kumade/configuration_spec.rb
|
137
164
|
- spec/kumade/deployer_spec.rb
|
138
165
|
- spec/kumade/git_spec.rb
|
139
|
-
- spec/kumade/
|
166
|
+
- spec/kumade/heroku_spec.rb
|
167
|
+
- spec/kumade/packager_spec.rb
|
168
|
+
- spec/kumade_spec.rb
|
140
169
|
- spec/spec_helper.rb
|
170
|
+
- spec/support/heroku.rb
|
141
171
|
homepage: http://thoughtbot.com/community/
|
142
172
|
licenses: []
|
143
173
|
post_install_message:
|
@@ -150,15 +180,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
150
180
|
- - ! '>='
|
151
181
|
- !ruby/object:Gem::Version
|
152
182
|
version: '0'
|
183
|
+
segments:
|
184
|
+
- 0
|
185
|
+
hash: -777649075615778830
|
153
186
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
154
187
|
none: false
|
155
188
|
requirements:
|
156
189
|
- - ! '>='
|
157
190
|
- !ruby/object:Gem::Version
|
158
191
|
version: '0'
|
192
|
+
segments:
|
193
|
+
- 0
|
194
|
+
hash: -777649075615778830
|
159
195
|
requirements: []
|
160
196
|
rubyforge_project:
|
161
|
-
rubygems_version: 1.8.
|
197
|
+
rubygems_version: 1.8.8
|
162
198
|
signing_key:
|
163
199
|
specification_version: 3
|
164
200
|
summary: A well-tested script for easy deploying to Heroku
|
@@ -171,7 +207,12 @@ test_files:
|
|
171
207
|
- features/step_definitions/kumade_steps.rb
|
172
208
|
- features/support/env.rb
|
173
209
|
- spec/kumade/base_spec.rb
|
210
|
+
- spec/kumade/cli_spec.rb
|
211
|
+
- spec/kumade/configuration_spec.rb
|
174
212
|
- spec/kumade/deployer_spec.rb
|
175
213
|
- spec/kumade/git_spec.rb
|
176
|
-
- spec/kumade/
|
214
|
+
- spec/kumade/heroku_spec.rb
|
215
|
+
- spec/kumade/packager_spec.rb
|
216
|
+
- spec/kumade_spec.rb
|
177
217
|
- spec/spec_helper.rb
|
218
|
+
- spec/support/heroku.rb
|
data/lib/kumade/runner.rb
DELETED
@@ -1,70 +0,0 @@
|
|
1
|
-
require 'optparse'
|
2
|
-
|
3
|
-
module Kumade
|
4
|
-
class Runner
|
5
|
-
class << self
|
6
|
-
attr_reader :environment
|
7
|
-
end
|
8
|
-
|
9
|
-
def self.run(args=ARGV, out=StringIO.new)
|
10
|
-
@out = out
|
11
|
-
@options = parse_arguments!(args)
|
12
|
-
@environment = args.shift || 'staging'
|
13
|
-
|
14
|
-
swapping_stdout_for(@out) do
|
15
|
-
deploy
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def self.deploy
|
20
|
-
if pretending?
|
21
|
-
puts "==> In Pretend Mode"
|
22
|
-
end
|
23
|
-
puts "==> Deploying to: #{environment}"
|
24
|
-
Deployer.new(environment, pretending?).deploy
|
25
|
-
puts "==> Deployed to: #{environment}"
|
26
|
-
end
|
27
|
-
|
28
|
-
def self.parse_arguments!(args)
|
29
|
-
options = {}
|
30
|
-
OptionParser.new do |opts|
|
31
|
-
opts.banner = "Usage: kumade <environment> [options]"
|
32
|
-
|
33
|
-
opts.on("-p", "--pretend", "Pretend mode: print what kumade would do") do |p|
|
34
|
-
options[:pretend] = p
|
35
|
-
end
|
36
|
-
|
37
|
-
opts.on_tail('-v', '--version', 'Show version') do
|
38
|
-
puts "kumade #{Kumade::VERSION}"
|
39
|
-
exit
|
40
|
-
end
|
41
|
-
|
42
|
-
opts.on_tail('-h', '--help', 'Show this message') do
|
43
|
-
puts opts
|
44
|
-
exit
|
45
|
-
end
|
46
|
-
end.parse!(args)
|
47
|
-
|
48
|
-
options
|
49
|
-
end
|
50
|
-
|
51
|
-
def self.swapping_stdout_for(io)
|
52
|
-
begin
|
53
|
-
$real_stdout = $stdout
|
54
|
-
$stdout = io unless pretending?
|
55
|
-
yield
|
56
|
-
rescue Kumade::DeploymentError
|
57
|
-
unless pretending?
|
58
|
-
io.rewind
|
59
|
-
$real_stdout.print(io.read)
|
60
|
-
end
|
61
|
-
ensure
|
62
|
-
$stdout = $real_stdout
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
def self.pretending?
|
67
|
-
@options[:pretend]
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
data/spec/kumade/runner_spec.rb
DELETED
@@ -1,66 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Kumade::Runner do
|
4
|
-
subject { Kumade::Runner }
|
5
|
-
let(:out){ StringIO.new }
|
6
|
-
let(:environment){ 'my-environment' }
|
7
|
-
|
8
|
-
%w(-p --pretend).each do |pretend_arg|
|
9
|
-
it "sets pretend mode when run with #{pretend_arg}" do
|
10
|
-
subject.stub(:deploy)
|
11
|
-
|
12
|
-
subject.run([environment, pretend_arg], out)
|
13
|
-
subject.pretending?.should be_true
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
it "defaults to staging" do
|
18
|
-
subject.stub(:deploy)
|
19
|
-
subject.run([], out)
|
20
|
-
subject.environment.should == 'staging'
|
21
|
-
end
|
22
|
-
|
23
|
-
it "deploys" do
|
24
|
-
Kumade::Deployer.any_instance.should_receive(:deploy)
|
25
|
-
|
26
|
-
subject.run([environment], out)
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
describe Kumade::Runner do
|
32
|
-
it 'does not let anything get printed' do
|
33
|
-
stdout = $stdout
|
34
|
-
stdout.should_not_receive(:print)
|
35
|
-
output = StringIO.new
|
36
|
-
|
37
|
-
Kumade::Runner.swapping_stdout_for(output) do
|
38
|
-
$stdout.puts "Hello, you can't see me."
|
39
|
-
end
|
40
|
-
|
41
|
-
output.rewind
|
42
|
-
output.read.should == "Hello, you can't see me.\n"
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'dumps the output stash to real stdout when an error happens' do
|
46
|
-
stdout = $stdout
|
47
|
-
stdout.should_receive(:print)
|
48
|
-
output = StringIO.new
|
49
|
-
|
50
|
-
Kumade::Runner.swapping_stdout_for(output) do
|
51
|
-
$stdout.puts "Hello, you can see me!"
|
52
|
-
raise Kumade::DeploymentError.new("error")
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
it 'prints everything in pretend mode' do
|
57
|
-
stdout = $stdout
|
58
|
-
stdout.should_receive(:puts)
|
59
|
-
output = StringIO.new
|
60
|
-
Kumade::Runner.should_receive(:pretending?).and_return(true)
|
61
|
-
|
62
|
-
Kumade::Runner.swapping_stdout_for(output) do
|
63
|
-
$stdout.puts "Hello, you can see me!"
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|