bard 0.12.0 → 0.13.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/VERSION +1 -1
- data/bard.gemspec +46 -48
- data/lib/bard.rb +63 -14
- data/lib/bard/error.rb +13 -2
- metadata +50 -51
- data/.gitignore +0 -7
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.
|
|
1
|
+
0.13.0
|
data/bard.gemspec
CHANGED
|
@@ -1,76 +1,74 @@
|
|
|
1
1
|
# Generated by jeweler
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = %q{bard}
|
|
8
|
-
s.version = "0.
|
|
8
|
+
s.version = "0.13.0"
|
|
9
9
|
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
11
|
s.authors = ["Micah Geisel", "Nick Hogle"]
|
|
12
|
-
s.date = %q{
|
|
12
|
+
s.date = %q{2011-03-15}
|
|
13
13
|
s.default_executable = %q{bard}
|
|
14
14
|
s.description = %q{This immaculate work of engineering genius allows mere mortals to collaborate with beings of transcendent intelligence like Micah, Michael, and Nick.}
|
|
15
15
|
s.email = %q{info@botandrose.com}
|
|
16
16
|
s.executables = ["bard"]
|
|
17
17
|
s.extra_rdoc_files = [
|
|
18
18
|
"LICENSE",
|
|
19
|
-
|
|
19
|
+
"README.rdoc"
|
|
20
20
|
]
|
|
21
21
|
s.files = [
|
|
22
22
|
".document",
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
"spec/spec_helper.rb"
|
|
23
|
+
".gitmodules",
|
|
24
|
+
".rvmrc",
|
|
25
|
+
"Gemfile",
|
|
26
|
+
"Gemfile.lock",
|
|
27
|
+
"LICENSE",
|
|
28
|
+
"README.rdoc",
|
|
29
|
+
"Rakefile",
|
|
30
|
+
"VERSION",
|
|
31
|
+
"bard.gemspec",
|
|
32
|
+
"bin/bard",
|
|
33
|
+
"features/bard_check.feature",
|
|
34
|
+
"features/bard_deploy.feature",
|
|
35
|
+
"features/bard_pull.feature",
|
|
36
|
+
"features/bard_push.feature",
|
|
37
|
+
"features/step_definitions/check_steps.rb",
|
|
38
|
+
"features/step_definitions/git_steps.rb",
|
|
39
|
+
"features/step_definitions/global_steps.rb",
|
|
40
|
+
"features/step_definitions/rails_steps.rb",
|
|
41
|
+
"features/step_definitions/submodule_steps.rb",
|
|
42
|
+
"features/support/env.rb",
|
|
43
|
+
"features/support/grit_ext.rb",
|
|
44
|
+
"features/support/io.rb",
|
|
45
|
+
"lib/bard.rb",
|
|
46
|
+
"lib/bard/capistrano.rb",
|
|
47
|
+
"lib/bard/check.rb",
|
|
48
|
+
"lib/bard/error.rb",
|
|
49
|
+
"lib/bard/git.rb",
|
|
50
|
+
"lib/bard/io.rb",
|
|
51
|
+
"lib/bard/ssh_delegation.rb",
|
|
52
|
+
"lib/bard/template.rb",
|
|
53
|
+
"lib/bard/template/adva.rb",
|
|
54
|
+
"lib/bard/template/authlogic.rb",
|
|
55
|
+
"lib/bard/template/compass.rb",
|
|
56
|
+
"lib/bard/template/exception_notifier.rb",
|
|
57
|
+
"lib/bard/template/gems.rb",
|
|
58
|
+
"lib/bard/template/helper.rb",
|
|
59
|
+
"lib/bard/template/initial.rb",
|
|
60
|
+
"lib/bard/template/static_pages.rb",
|
|
61
|
+
"lib/bard/template/testing.rb",
|
|
62
|
+
"spec/bard_spec.rb",
|
|
63
|
+
"spec/spec_helper.rb"
|
|
65
64
|
]
|
|
66
65
|
s.homepage = %q{http://github.com/botandrose/bard}
|
|
67
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
|
68
66
|
s.require_paths = ["lib"]
|
|
69
67
|
s.rubygems_version = %q{1.3.7}
|
|
70
68
|
s.summary = %q{Tools for collaborating with Bot and Rose Design.}
|
|
71
69
|
s.test_files = [
|
|
72
70
|
"spec/bard_spec.rb",
|
|
73
|
-
|
|
71
|
+
"spec/spec_helper.rb"
|
|
74
72
|
]
|
|
75
73
|
|
|
76
74
|
if s.respond_to? :specification_version then
|
data/lib/bard.rb
CHANGED
|
@@ -91,27 +91,76 @@ class Bard < Thor
|
|
|
91
91
|
run_crucial "git push origin master"
|
|
92
92
|
run_crucial "git checkout integration"
|
|
93
93
|
|
|
94
|
-
|
|
95
|
-
puts "Integrity: verifying build..."
|
|
96
|
-
system "curl -sX POST --user botandrose:thecakeisalie http://integrity.botandrose.com/#{project_name}/builds"
|
|
97
|
-
while true
|
|
98
|
-
response = `curl -s --user botandrose:thecakeisalie http://integrity.botandrose.com/#{project_name}`
|
|
99
|
-
break unless response =~ /div class='(building|pending)' id='last_build'/
|
|
100
|
-
sleep(2)
|
|
101
|
-
end
|
|
102
|
-
case response
|
|
103
|
-
when /div class='failed' id='last_build'/ then raise TestsFailedError
|
|
104
|
-
when /div class='success' id='last_build'/ then puts "Integrity: success! deploying to production"
|
|
105
|
-
else raise "Unknown response from CI server:\n#{response}"
|
|
106
|
-
end
|
|
107
|
-
end
|
|
94
|
+
invoke :ci
|
|
108
95
|
|
|
109
96
|
run_crucial "cap deploy", options.verbose?
|
|
110
97
|
|
|
111
98
|
puts green("Deploy Succeeded")
|
|
112
99
|
end
|
|
113
100
|
|
|
101
|
+
method_options %w( verbose -v ) => :boolean
|
|
102
|
+
desc "ci", "runs ci against master branch"
|
|
103
|
+
def ci
|
|
104
|
+
return unless has_ci?
|
|
105
|
+
|
|
106
|
+
puts "Continuous integration: starting build..."
|
|
107
|
+
last_build_number = get_last_build_number
|
|
108
|
+
last_time_elapsed = get_last_time_elapsed
|
|
109
|
+
start_ci
|
|
110
|
+
sleep(2) while last_build_number == get_last_build_number
|
|
111
|
+
|
|
112
|
+
start_time = Time.new.to_i
|
|
113
|
+
while (response = `curl -s #{ci_host}/lastBuild/api/xml?token=botandrose`).include? "<building>true</building>"
|
|
114
|
+
elapsed_time = Time.new.to_i - start_time
|
|
115
|
+
percentage = (elapsed_time.to_f / last_time_elapsed.to_f * 100).to_i
|
|
116
|
+
output = " Estimated completion: #{percentage}%"
|
|
117
|
+
print "\x08" * output.length
|
|
118
|
+
print output
|
|
119
|
+
$stdout.flush
|
|
120
|
+
sleep(2)
|
|
121
|
+
end
|
|
122
|
+
puts
|
|
123
|
+
|
|
124
|
+
case response
|
|
125
|
+
when /<result>FAILURE<\/result>/ then
|
|
126
|
+
puts
|
|
127
|
+
puts `curl -s #{ci_host}/lastBuild/console?token=botandrose`.match(/<pre>(.+)<\/pre>/m)[1]
|
|
128
|
+
puts
|
|
129
|
+
raise TestsFailedError, "#{ci_host}/#{get_last_build_number}/console"
|
|
130
|
+
|
|
131
|
+
when /<result>ABORTED<\/result>/ then
|
|
132
|
+
raise TestsAbortedError, "#{ci_host}/#{get_last_build_number}/console"
|
|
133
|
+
|
|
134
|
+
when /<result>SUCCESS<\/result>/ then
|
|
135
|
+
puts "Continuous integration: success! deploying to production"
|
|
136
|
+
|
|
137
|
+
else raise "Unknown response from CI server:\n#{response}"
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
114
141
|
private
|
|
142
|
+
def ci_host
|
|
143
|
+
"http://botandrose:thecakeisalie!@ci.botandrose.com/job/#{project_name}"
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
def has_ci?
|
|
147
|
+
`curl -s -I #{ci_host}/?token=botandrose` =~ /\b200 OK\b/
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def start_ci
|
|
151
|
+
`curl -s -I -X POST #{ci_host}/build?token=botandrose`
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
def get_last_build_number
|
|
155
|
+
response = `curl -s #{ci_host}/lastBuild/api/xml?token=botandrose`
|
|
156
|
+
response.match(/<number>(\d+)<\/number>/)[1].to_i
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
def get_last_time_elapsed
|
|
160
|
+
response = `curl -s #{ci_host}/lastStableBuild/api/xml?token=botandrose`
|
|
161
|
+
response.match(/<duration>(\d+)<\/duration>/)[1].to_i / 1000
|
|
162
|
+
end
|
|
163
|
+
|
|
115
164
|
def ensure_sanity!(dirty_ok = false)
|
|
116
165
|
auto_update!
|
|
117
166
|
check_dependencies
|
data/lib/bard/error.rb
CHANGED
|
@@ -7,8 +7,7 @@ class Bard < Thor
|
|
|
7
7
|
"NotInProjectRootError" => "You are not in the project's root directory!",
|
|
8
8
|
"OnMasterBranchError" => "You are on the master branch!\n This is almost always a bad idea. Please work on a topic branch. If you have made changes on this branch, please see Micah for assistance.",
|
|
9
9
|
"WorkingTreeDirtyError" => "You have uncommitted changes!\n Please run git commit before attempting to push or pull.",
|
|
10
|
-
"StagingDetachedHeadError" => "The staging server is on a detached HEAD!\n Please see Micah for assistance."
|
|
11
|
-
"TestsFailedError" => "Automated tests failed!\n See http://integrity.botandrose.com/ for more info."
|
|
10
|
+
"StagingDetachedHeadError" => "The staging server is on a detached HEAD!\n Please see Micah for assistance."
|
|
12
11
|
}.each do |error, message|
|
|
13
12
|
eval <<-RUBY
|
|
14
13
|
class #{error} < Bard::Error
|
|
@@ -18,4 +17,16 @@ class Bard < Thor
|
|
|
18
17
|
end
|
|
19
18
|
RUBY
|
|
20
19
|
end
|
|
20
|
+
|
|
21
|
+
class TestsFailedError < Bard::Error
|
|
22
|
+
def message
|
|
23
|
+
"Automated tests failed!\n See #{super} for more info."
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
class TestsAbortedError < Bard::Error
|
|
28
|
+
def message
|
|
29
|
+
"Automated tests aborted!\n See #{super} for more info."
|
|
30
|
+
end
|
|
31
|
+
end
|
|
21
32
|
end
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bard
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
4
|
+
hash: 43
|
|
5
5
|
prerelease: false
|
|
6
6
|
segments:
|
|
7
7
|
- 0
|
|
8
|
-
-
|
|
8
|
+
- 13
|
|
9
9
|
- 0
|
|
10
|
-
version: 0.
|
|
10
|
+
version: 0.13.0
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Micah Geisel
|
|
@@ -16,13 +16,11 @@ autorequire:
|
|
|
16
16
|
bindir: bin
|
|
17
17
|
cert_chain: []
|
|
18
18
|
|
|
19
|
-
date:
|
|
19
|
+
date: 2011-03-15 00:00:00 -07:00
|
|
20
20
|
default_executable: bard
|
|
21
21
|
dependencies:
|
|
22
22
|
- !ruby/object:Gem::Dependency
|
|
23
|
-
|
|
24
|
-
prerelease: false
|
|
25
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
|
23
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
|
26
24
|
none: false
|
|
27
25
|
requirements:
|
|
28
26
|
- - ">="
|
|
@@ -31,12 +29,12 @@ dependencies:
|
|
|
31
29
|
segments:
|
|
32
30
|
- 0
|
|
33
31
|
version: "0"
|
|
32
|
+
requirement: *id001
|
|
33
|
+
prerelease: false
|
|
34
34
|
type: :development
|
|
35
|
-
|
|
35
|
+
name: ruby-debug
|
|
36
36
|
- !ruby/object:Gem::Dependency
|
|
37
|
-
|
|
38
|
-
prerelease: false
|
|
39
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
|
37
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
|
40
38
|
none: false
|
|
41
39
|
requirements:
|
|
42
40
|
- - ">="
|
|
@@ -45,12 +43,12 @@ dependencies:
|
|
|
45
43
|
segments:
|
|
46
44
|
- 0
|
|
47
45
|
version: "0"
|
|
46
|
+
requirement: *id002
|
|
47
|
+
prerelease: false
|
|
48
48
|
type: :development
|
|
49
|
-
|
|
49
|
+
name: rspec
|
|
50
50
|
- !ruby/object:Gem::Dependency
|
|
51
|
-
|
|
52
|
-
prerelease: false
|
|
53
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
|
51
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
|
54
52
|
none: false
|
|
55
53
|
requirements:
|
|
56
54
|
- - ">="
|
|
@@ -59,12 +57,12 @@ dependencies:
|
|
|
59
57
|
segments:
|
|
60
58
|
- 0
|
|
61
59
|
version: "0"
|
|
60
|
+
requirement: *id003
|
|
61
|
+
prerelease: false
|
|
62
62
|
type: :development
|
|
63
|
-
|
|
63
|
+
name: cucumber
|
|
64
64
|
- !ruby/object:Gem::Dependency
|
|
65
|
-
|
|
66
|
-
prerelease: false
|
|
67
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
|
65
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
|
68
66
|
none: false
|
|
69
67
|
requirements:
|
|
70
68
|
- - "="
|
|
@@ -75,12 +73,12 @@ dependencies:
|
|
|
75
73
|
- 11
|
|
76
74
|
- 7
|
|
77
75
|
version: 0.11.7
|
|
76
|
+
requirement: *id004
|
|
77
|
+
prerelease: false
|
|
78
78
|
type: :runtime
|
|
79
|
-
|
|
79
|
+
name: thor
|
|
80
80
|
- !ruby/object:Gem::Dependency
|
|
81
|
-
|
|
82
|
-
prerelease: false
|
|
83
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
|
81
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
|
84
82
|
none: false
|
|
85
83
|
requirements:
|
|
86
84
|
- - "="
|
|
@@ -91,12 +89,12 @@ dependencies:
|
|
|
91
89
|
- 5
|
|
92
90
|
- 10
|
|
93
91
|
version: 2.5.10
|
|
92
|
+
requirement: *id005
|
|
93
|
+
prerelease: false
|
|
94
94
|
type: :runtime
|
|
95
|
-
|
|
95
|
+
name: capistrano
|
|
96
96
|
- !ruby/object:Gem::Dependency
|
|
97
|
-
|
|
98
|
-
prerelease: false
|
|
99
|
-
requirement: &id006 !ruby/object:Gem::Requirement
|
|
97
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
|
100
98
|
none: false
|
|
101
99
|
requirements:
|
|
102
100
|
- - "="
|
|
@@ -107,12 +105,12 @@ dependencies:
|
|
|
107
105
|
- 1
|
|
108
106
|
- 1
|
|
109
107
|
version: 1.1.1
|
|
108
|
+
requirement: *id006
|
|
109
|
+
prerelease: false
|
|
110
110
|
type: :runtime
|
|
111
|
-
|
|
111
|
+
name: grit
|
|
112
112
|
- !ruby/object:Gem::Dependency
|
|
113
|
-
|
|
114
|
-
prerelease: false
|
|
115
|
-
requirement: &id007 !ruby/object:Gem::Requirement
|
|
113
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
|
116
114
|
none: false
|
|
117
115
|
requirements:
|
|
118
116
|
- - ">="
|
|
@@ -123,12 +121,12 @@ dependencies:
|
|
|
123
121
|
- 3
|
|
124
122
|
- 0
|
|
125
123
|
version: 0.3.0
|
|
124
|
+
requirement: *id007
|
|
125
|
+
prerelease: false
|
|
126
126
|
type: :runtime
|
|
127
|
-
|
|
127
|
+
name: git_remote_branch
|
|
128
128
|
- !ruby/object:Gem::Dependency
|
|
129
|
-
|
|
130
|
-
prerelease: false
|
|
131
|
-
requirement: &id008 !ruby/object:Gem::Requirement
|
|
129
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
|
132
130
|
none: false
|
|
133
131
|
requirements:
|
|
134
132
|
- - ">="
|
|
@@ -139,12 +137,12 @@ dependencies:
|
|
|
139
137
|
- 3
|
|
140
138
|
- 0
|
|
141
139
|
version: 0.3.0
|
|
140
|
+
requirement: *id008
|
|
141
|
+
prerelease: false
|
|
142
142
|
type: :runtime
|
|
143
|
-
|
|
143
|
+
name: versionomy
|
|
144
144
|
- !ruby/object:Gem::Dependency
|
|
145
|
-
|
|
146
|
-
prerelease: false
|
|
147
|
-
requirement: &id009 !ruby/object:Gem::Requirement
|
|
145
|
+
version_requirements: &id009 !ruby/object:Gem::Requirement
|
|
148
146
|
none: false
|
|
149
147
|
requirements:
|
|
150
148
|
- - ">="
|
|
@@ -155,12 +153,12 @@ dependencies:
|
|
|
155
153
|
- 2
|
|
156
154
|
- 0
|
|
157
155
|
version: 1.2.0
|
|
156
|
+
requirement: *id009
|
|
157
|
+
prerelease: false
|
|
158
158
|
type: :runtime
|
|
159
|
-
|
|
159
|
+
name: systemu
|
|
160
160
|
- !ruby/object:Gem::Dependency
|
|
161
|
-
|
|
162
|
-
prerelease: false
|
|
163
|
-
requirement: &id010 !ruby/object:Gem::Requirement
|
|
161
|
+
version_requirements: &id010 !ruby/object:Gem::Requirement
|
|
164
162
|
none: false
|
|
165
163
|
requirements:
|
|
166
164
|
- - ">="
|
|
@@ -171,12 +169,12 @@ dependencies:
|
|
|
171
169
|
- 0
|
|
172
170
|
- 3
|
|
173
171
|
version: 1.0.3
|
|
172
|
+
requirement: *id010
|
|
173
|
+
prerelease: false
|
|
174
174
|
type: :runtime
|
|
175
|
-
|
|
175
|
+
name: term-ansicolor
|
|
176
176
|
- !ruby/object:Gem::Dependency
|
|
177
|
-
|
|
178
|
-
prerelease: false
|
|
179
|
-
requirement: &id011 !ruby/object:Gem::Requirement
|
|
177
|
+
version_requirements: &id011 !ruby/object:Gem::Requirement
|
|
180
178
|
none: false
|
|
181
179
|
requirements:
|
|
182
180
|
- - ">="
|
|
@@ -187,8 +185,10 @@ dependencies:
|
|
|
187
185
|
- 1
|
|
188
186
|
- 1
|
|
189
187
|
version: 0.1.1
|
|
188
|
+
requirement: *id011
|
|
189
|
+
prerelease: false
|
|
190
190
|
type: :runtime
|
|
191
|
-
|
|
191
|
+
name: bard-rake
|
|
192
192
|
description: This immaculate work of engineering genius allows mere mortals to collaborate with beings of transcendent intelligence like Micah, Michael, and Nick.
|
|
193
193
|
email: info@botandrose.com
|
|
194
194
|
executables:
|
|
@@ -200,7 +200,6 @@ extra_rdoc_files:
|
|
|
200
200
|
- README.rdoc
|
|
201
201
|
files:
|
|
202
202
|
- .document
|
|
203
|
-
- .gitignore
|
|
204
203
|
- .gitmodules
|
|
205
204
|
- .rvmrc
|
|
206
205
|
- Gemfile
|
|
@@ -247,8 +246,8 @@ homepage: http://github.com/botandrose/bard
|
|
|
247
246
|
licenses: []
|
|
248
247
|
|
|
249
248
|
post_install_message:
|
|
250
|
-
rdoc_options:
|
|
251
|
-
|
|
249
|
+
rdoc_options: []
|
|
250
|
+
|
|
252
251
|
require_paths:
|
|
253
252
|
- lib
|
|
254
253
|
required_ruby_version: !ruby/object:Gem::Requirement
|