chicanery 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/examples/baby_steps.rb +35 -0
- data/examples/{travis.rb → chicanery.rb} +5 -1
- data/lib/chicanery/cctray.rb +10 -2
- data/lib/chicanery/git.rb +11 -8
- data/lib/chicanery/summary.rb +11 -0
- data/lib/chicanery.rb +3 -1
- data/spec/chicanery/state_comparison_spec.rb +2 -2
- data/spec/chicanery/summary_spec.rb +29 -0
- metadata +9 -7
- data/examples/evil.rb +0 -24
- data/examples/github.rb +0 -11
data/Gemfile.lock
CHANGED
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'chicanery/git'
|
2
|
+
|
3
|
+
include Chicanery::Git
|
4
|
+
|
5
|
+
git_repo 'chicanery', '.', branches: [:master]
|
6
|
+
|
7
|
+
def now
|
8
|
+
Time.now.to_i
|
9
|
+
end
|
10
|
+
|
11
|
+
def say message
|
12
|
+
`growlnotify -t "some new chicanery ..." --image ~/icons/chicanery.png -m \"#{message}\"`
|
13
|
+
end
|
14
|
+
|
15
|
+
start = now
|
16
|
+
maximum = ARGV.shift.to_i
|
17
|
+
|
18
|
+
say "Uncommitted changes will be automatically reverted after #{maximum} seconds"
|
19
|
+
|
20
|
+
when_run do |state|
|
21
|
+
start = now if `git status`.chomp.split("\n").last == 'nothing to commit, working directory clean'
|
22
|
+
elapsed = now - start
|
23
|
+
if elapsed >= maximum
|
24
|
+
say "no commits detected in #{elapsed} seconds - reverting all uncommitted changes"
|
25
|
+
`afplay ~/build_sounds/ticktock.mp3`
|
26
|
+
`git reset --hard`
|
27
|
+
`git clean -d -x -f`
|
28
|
+
start = now
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
when_commit do |branch, commit, previous|
|
33
|
+
say "commit detected - resetting timer"
|
34
|
+
start = now
|
35
|
+
end
|
@@ -3,7 +3,7 @@ require 'chicanery/git'
|
|
3
3
|
|
4
4
|
include Chicanery::Git
|
5
5
|
|
6
|
-
git_repo 'chicanery', '.', remotes: {
|
6
|
+
git_repo 'chicanery', '.', branches: [:master], remotes: {
|
7
7
|
github: { url: 'git://github.com/markryall/chicanery.git' }
|
8
8
|
}
|
9
9
|
|
@@ -13,6 +13,10 @@ def growlnotify message
|
|
13
13
|
`growlnotify -t "some new chicanery ..." --image ~/icons/chicanery.png -m \"#{message}\"`
|
14
14
|
end
|
15
15
|
|
16
|
+
when_run do |state|
|
17
|
+
puts state.has_failure? ? "something is wrong" : "all builds are fine"
|
18
|
+
end
|
19
|
+
|
16
20
|
when_commit do |repo, commit, previous|
|
17
21
|
growlnotify "commit #{previous}..#{commit} detected in repo #{repo}"
|
18
22
|
end
|
data/lib/chicanery/cctray.rb
CHANGED
@@ -24,8 +24,8 @@ module Chicanery
|
|
24
24
|
Nokogiri::XML(get).css("Project").each do |project|
|
25
25
|
job = {
|
26
26
|
activity: project[:activity] == 'Sleeping' ? :sleeping : :building,
|
27
|
-
last_build_status: project[:lastBuildStatus]
|
28
|
-
last_build_time: project[:lastBuildTime].empty? ? nil : DateTime.parse(project[:lastBuildTime]),
|
27
|
+
last_build_status: parse_build_status(project[:lastBuildStatus]),
|
28
|
+
last_build_time: project[:lastBuildTime].empty? ? nil : DateTime.parse(project[:lastBuildTime]).to_time.to_i,
|
29
29
|
url: project[:webUrl],
|
30
30
|
last_label: project[:lastBuildLabel]
|
31
31
|
}
|
@@ -34,6 +34,14 @@ module Chicanery
|
|
34
34
|
jobs
|
35
35
|
end
|
36
36
|
|
37
|
+
def parse_build_status status
|
38
|
+
case status
|
39
|
+
when /^Success/ then :success
|
40
|
+
when /^Unknown/ then :unknown
|
41
|
+
else :failure
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
37
45
|
def filtered name
|
38
46
|
return false unless options[:include]
|
39
47
|
!options[:include].match(name)
|
data/lib/chicanery/git.rb
CHANGED
@@ -28,22 +28,25 @@ module Chicanery
|
|
28
28
|
response = {}
|
29
29
|
in_repo do
|
30
30
|
remotes.each do |name, remote|
|
31
|
-
git "remote add #{name} #{remote[:url]}" unless git("remote | grep #{name}") == name.to_s
|
32
|
-
git "fetch -q #{name}"
|
33
31
|
(remote[:branches] || ['master']).each do |branch|
|
34
|
-
response["#{name}/#{branch}"] =
|
32
|
+
response["#{name}/#{branch}"] = remote_head remote[:url], branch
|
35
33
|
end
|
36
34
|
end
|
37
|
-
branches.each
|
38
|
-
response[branch] = head branch
|
39
|
-
end
|
35
|
+
branches.each { |branch| response[branch] = head branch }
|
40
36
|
end
|
41
37
|
response
|
42
38
|
end
|
43
39
|
|
40
|
+
def remote_head url, branch
|
41
|
+
sha "ls-remote #{url} #{branch}"
|
42
|
+
end
|
43
|
+
|
44
44
|
def head branch
|
45
|
-
|
46
|
-
|
45
|
+
sha "log -n 1 #{branch} --pretty=oneline"
|
46
|
+
end
|
47
|
+
|
48
|
+
def sha command
|
49
|
+
git(command).split.first
|
47
50
|
end
|
48
51
|
|
49
52
|
def git command
|
data/lib/chicanery.rb
CHANGED
@@ -8,6 +8,7 @@ require 'chicanery/persistence'
|
|
8
8
|
require 'chicanery/collections'
|
9
9
|
require 'chicanery/handlers'
|
10
10
|
require 'chicanery/state_comparison'
|
11
|
+
require 'chicanery/summary'
|
11
12
|
|
12
13
|
module Chicanery
|
13
14
|
include Persistence
|
@@ -15,7 +16,7 @@ module Chicanery
|
|
15
16
|
include Handlers
|
16
17
|
include StateComparison
|
17
18
|
|
18
|
-
VERSION = "0.0.
|
19
|
+
VERSION = "0.0.6"
|
19
20
|
|
20
21
|
def execute args
|
21
22
|
begin
|
@@ -37,6 +38,7 @@ module Chicanery
|
|
37
38
|
compare_jobs current_jobs, previous_state[:servers][server.name] if previous_state[:servers]
|
38
39
|
current_state[:servers][server.name] = current_jobs
|
39
40
|
end
|
41
|
+
current_state.extend Chicanery::Summary
|
40
42
|
run_handlers.each {|handler| handler.call current_state }
|
41
43
|
persist current_state
|
42
44
|
break unless poll_period
|
@@ -19,8 +19,8 @@ describe Chicanery::StateComparison do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
describe '#compare_job' do
|
22
|
-
let(:current_job) { { activity: :sleeping, last_build_time:
|
23
|
-
let(:previous_job) { { activity: :sleeping, last_build_time:
|
22
|
+
let(:current_job) { { activity: :sleeping, last_build_time: 10 } }
|
23
|
+
let(:previous_job) { { activity: :sleeping, last_build_time: 5 } }
|
24
24
|
|
25
25
|
before {
|
26
26
|
stub! :notify_failed_handlers
|
@@ -0,0 +1,29 @@
|
|
1
|
+
describe Chicanery::Summary do
|
2
|
+
describe '#failure?' do
|
3
|
+
let(:state) { {servers: {} } }
|
4
|
+
|
5
|
+
before do
|
6
|
+
state.extend Chicanery::Summary
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'should be false if there are no jobs' do
|
10
|
+
state.should_not have_failure
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should be false if there are no failures' do
|
14
|
+
state[:servers][:server1] = {
|
15
|
+
job1: { last_build_status: :success },
|
16
|
+
job2: { last_build_status: :success }
|
17
|
+
}
|
18
|
+
state.should_not have_failure
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should be true if there is a single failure' do
|
22
|
+
state[:servers][:server1] = {
|
23
|
+
job1: { last_build_status: :failure },
|
24
|
+
job2: { last_build_status: :success }
|
25
|
+
}
|
26
|
+
state.should have_failure
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chicanery
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-12-
|
12
|
+
date: 2012-12-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
@@ -108,9 +108,8 @@ files:
|
|
108
108
|
- Rakefile
|
109
109
|
- bin/chicanery
|
110
110
|
- chicanery.gemspec
|
111
|
-
- examples/
|
112
|
-
- examples/
|
113
|
-
- examples/travis.rb
|
111
|
+
- examples/baby_steps.rb
|
112
|
+
- examples/chicanery.rb
|
114
113
|
- lib/chicanery.rb
|
115
114
|
- lib/chicanery/cctray.rb
|
116
115
|
- lib/chicanery/collections.rb
|
@@ -118,9 +117,11 @@ files:
|
|
118
117
|
- lib/chicanery/handlers.rb
|
119
118
|
- lib/chicanery/persistence.rb
|
120
119
|
- lib/chicanery/state_comparison.rb
|
120
|
+
- lib/chicanery/summary.rb
|
121
121
|
- spec/chicanery/collections_spec.rb
|
122
122
|
- spec/chicanery/persistence_spec.rb
|
123
123
|
- spec/chicanery/state_comparison_spec.rb
|
124
|
+
- spec/chicanery/summary_spec.rb
|
124
125
|
- spec/chicanery_spec.rb
|
125
126
|
homepage: http://github.com/markryall/chicanery
|
126
127
|
licenses: []
|
@@ -136,7 +137,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
136
137
|
version: '0'
|
137
138
|
segments:
|
138
139
|
- 0
|
139
|
-
hash: -
|
140
|
+
hash: -1603803825861310736
|
140
141
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
141
142
|
none: false
|
142
143
|
requirements:
|
@@ -145,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
145
146
|
version: '0'
|
146
147
|
segments:
|
147
148
|
- 0
|
148
|
-
hash: -
|
149
|
+
hash: -1603803825861310736
|
149
150
|
requirements: []
|
150
151
|
rubyforge_project:
|
151
152
|
rubygems_version: 1.8.23
|
@@ -156,4 +157,5 @@ test_files:
|
|
156
157
|
- spec/chicanery/collections_spec.rb
|
157
158
|
- spec/chicanery/persistence_spec.rb
|
158
159
|
- spec/chicanery/state_comparison_spec.rb
|
160
|
+
- spec/chicanery/summary_spec.rb
|
159
161
|
- spec/chicanery_spec.rb
|
data/examples/evil.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
require 'chicanery/git'
|
2
|
-
|
3
|
-
include Chicanery::Git
|
4
|
-
|
5
|
-
git_repo 'chicanery', '.', branches: [:master]
|
6
|
-
|
7
|
-
start = Time.now.to_i
|
8
|
-
maximum = ARGV.shift.to_i
|
9
|
-
|
10
|
-
puts "Uncommitted changes will be automatically reverted after #{maximum} seconds"
|
11
|
-
|
12
|
-
when_run do |state|
|
13
|
-
elapsed = Time.now.to_i - start
|
14
|
-
if elapsed >= maximum
|
15
|
-
puts "no commits detected in #{elapsed} seconds - reverting all uncommitted changes"
|
16
|
-
`git reset --hard`
|
17
|
-
start = Time.now.to_i
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
when_commit do |branch, commit, previous|
|
22
|
-
puts "commit detected - resetting timer"
|
23
|
-
start = Time.now.to_i
|
24
|
-
end
|
data/examples/github.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
require 'chicanery/git'
|
2
|
-
|
3
|
-
include Chicanery::Git
|
4
|
-
|
5
|
-
git_repo 'chicanery', '.', branches: [:master], remotes: {
|
6
|
-
github: { url: 'git://github.com/markryall/chicanery.git' }
|
7
|
-
}
|
8
|
-
|
9
|
-
when_commit do |branch, commit, previous|
|
10
|
-
puts "commit #{previous}..#{commit} detected in #{branch}"
|
11
|
-
end
|