heidi 0.1.0 → 0.1.1
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/README.rdoc +3 -0
- data/VERSION +1 -1
- data/bin/heidi +2 -1
- data/heidi.gemspec +2 -2
- data/lib/heidi/project.rb +24 -2
- data/lib/heidi/web/public/css/screen.css +15 -0
- data/lib/heidi/web/views/project.erb +26 -19
- data/lib/heidi/web.rb +2 -2
- metadata +19 -19
data/README.rdoc
CHANGED
@@ -113,6 +113,9 @@ Or by hand
|
|
113
113
|
|
114
114
|
heidi integrate [$project]
|
115
115
|
|
116
|
+
Projects that have been integrated up-to the latest commit wont be integrated
|
117
|
+
again, unless you explicitly specify the project.
|
118
|
+
|
116
119
|
== Results
|
117
120
|
|
118
121
|
And off course you would like to see some results...
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
data/bin/heidi
CHANGED
@@ -89,8 +89,9 @@ when "integrate"
|
|
89
89
|
heidi = Heidi.new
|
90
90
|
heidi.projects.each do |project|
|
91
91
|
next if !for_a.nil? && project.name != for_a
|
92
|
+
|
92
93
|
project.fetch
|
93
|
-
msg = project.integrate
|
94
|
+
msg = project.integrate(!for_a.nil?)
|
94
95
|
unless msg.nil? || msg == true
|
95
96
|
$stderr.puts "#{project.name}: #{msg}"
|
96
97
|
end
|
data/heidi.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "heidi"
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Hartog C. de Mik"]
|
12
|
-
s.date = "2012-02-
|
12
|
+
s.date = "2012-02-08"
|
13
13
|
s.description = "CI-Joe alike CI system called Heidi."
|
14
14
|
s.email = "hartog@organisedminds.com"
|
15
15
|
s.executables = ["heidi", "heidi_console", "heidi_cron", "heidi_web"]
|
data/lib/heidi/project.rb
CHANGED
@@ -21,6 +21,15 @@ class Heidi
|
|
21
21
|
next unless File.directory? build
|
22
22
|
@builds << Heidi::Build.new(self, File.basename(build))
|
23
23
|
end
|
24
|
+
|
25
|
+
def @builds.find(commit)
|
26
|
+
return nil unless commit.is_a?(String)
|
27
|
+
return nil unless commit.length >= 5
|
28
|
+
|
29
|
+
self.select do |build|
|
30
|
+
build.commit == commit || build.commit =~ Regexp.new(commit)
|
31
|
+
end.first
|
32
|
+
end
|
24
33
|
end
|
25
34
|
|
26
35
|
def name=(name)
|
@@ -69,9 +78,9 @@ class Heidi
|
|
69
78
|
name == "" ? nil : name
|
70
79
|
end
|
71
80
|
|
72
|
-
def integrate
|
81
|
+
def integrate(forced=false)
|
73
82
|
return "locked" if locked?
|
74
|
-
return true if self.current_build == self.commit
|
83
|
+
return true if !forced && self.current_build == self.commit
|
75
84
|
|
76
85
|
status = "unknown"
|
77
86
|
|
@@ -121,6 +130,19 @@ class Heidi
|
|
121
130
|
end
|
122
131
|
end
|
123
132
|
|
133
|
+
def log
|
134
|
+
shell = SimpleShell.new(@cached_root)
|
135
|
+
log = shell.git %W(log -n40 --color --graph --pretty=oneline --abbrev-commit)
|
136
|
+
|
137
|
+
lines = []
|
138
|
+
log.out.lines.each do |line|
|
139
|
+
commit = line.scan(/^[|*\s\e\[m\d]+(\w+)/).flatten.first
|
140
|
+
lines << { :line => line, :build => builds.find(commit) }
|
141
|
+
end
|
142
|
+
|
143
|
+
return lines
|
144
|
+
end
|
145
|
+
|
124
146
|
def unlock
|
125
147
|
File.unlink lock_file
|
126
148
|
end
|
@@ -75,6 +75,15 @@ pre.terminal {
|
|
75
75
|
clear: both;
|
76
76
|
}
|
77
77
|
|
78
|
+
.terminal a {
|
79
|
+
color: inherit;
|
80
|
+
text-decoration: none;
|
81
|
+
font-weight: bold;
|
82
|
+
border-bottom: dashed #ccc 1px;
|
83
|
+
margin: 4px 0;
|
84
|
+
display: inline-block;
|
85
|
+
}
|
86
|
+
|
78
87
|
ul {
|
79
88
|
margin-left: 3em;
|
80
89
|
}
|
@@ -91,3 +100,9 @@ ul {
|
|
91
100
|
.clear {
|
92
101
|
clear: both;
|
93
102
|
}
|
103
|
+
|
104
|
+
.column {
|
105
|
+
width: 48%;
|
106
|
+
margin-right: 10px;
|
107
|
+
float: left;
|
108
|
+
}
|
@@ -1,27 +1,34 @@
|
|
1
1
|
<h1><%= project.name %></h1>
|
2
2
|
|
3
3
|
<a href="/"><< back</a><br /><br />
|
4
|
-
<
|
4
|
+
<div class="column">
|
5
|
+
<h2 class="<%= project.build_status %>"><%= project.build_status %></h2>
|
5
6
|
|
6
|
-
<%
|
7
|
-
|
8
|
-
|
9
|
-
%>
|
7
|
+
<%
|
8
|
+
builds = project.builds
|
9
|
+
current = builds.select { |b| b.commit == project.current_build }.first
|
10
|
+
%>
|
10
11
|
|
11
|
-
<% unless current.nil? %>
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
<% end %>
|
12
|
+
<% unless current.nil? %>
|
13
|
+
<% builds -= [ current ] %>
|
14
|
+
<h2>Current build</h2>
|
15
|
+
<a class="<%= current.status %>" href="/projects/<%= project.name %>/build/<%= current.commit %>"><%= current.commit %></a>
|
16
|
+
<br />
|
17
|
+
<br />
|
18
|
+
<br />
|
19
|
+
<% end %>
|
19
20
|
|
21
|
+
<h2>Build history</h2>
|
20
22
|
|
21
|
-
<
|
23
|
+
<ul>
|
24
|
+
<% builds.each do |build| %>
|
25
|
+
<li class="<%= build.status %>"><a href='/projects/<%= project.name %>/build/<%= build.commit %>'><%= build.commit %></a> - <%= build.status %></li>
|
26
|
+
<% end %>
|
27
|
+
</ul>
|
28
|
+
</div>
|
22
29
|
|
23
|
-
<
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
</
|
30
|
+
<div class="column">
|
31
|
+
<pre class="terminal"><% project.log.each do |line| %><% build = nil; if (build = line[:build]) %><a href="/projects/<%= project.name %>/build/<%= build.commit %>"><%= ansi_color_codes(line[:line]).chomp %></a>
|
32
|
+
<% else %><%= ansi_color_codes line[:line] %>
|
33
|
+
<% end %><% end %></pre>
|
34
|
+
</div>
|
data/lib/heidi/web.rb
CHANGED
@@ -96,8 +96,8 @@ class Heidi
|
|
96
96
|
|
97
97
|
helpers do
|
98
98
|
def ansi_color_codes(string)
|
99
|
-
string.gsub(
|
100
|
-
gsub(/\e\[(\d+)m/, "<span class=\"color\\1\">")
|
99
|
+
string.gsub(/\e\[0?m/, '</span>').
|
100
|
+
gsub(/\e\[([\d\;]+)m/, "<span class=\"color\\1\">")
|
101
101
|
end
|
102
102
|
end
|
103
103
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: heidi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-02-
|
12
|
+
date: 2012-02-08 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thin
|
16
|
-
requirement: &
|
16
|
+
requirement: &77740420 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *77740420
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: sinatra
|
27
|
-
requirement: &
|
27
|
+
requirement: &77740120 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *77740120
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: simple_shell
|
38
|
-
requirement: &
|
38
|
+
requirement: &77739770 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *77739770
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
|
-
requirement: &
|
49
|
+
requirement: &77739480 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 2.8.0
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *77739480
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rdoc
|
60
|
-
requirement: &
|
60
|
+
requirement: &77739180 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '3.12'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *77739180
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bundler
|
71
|
-
requirement: &
|
71
|
+
requirement: &77734750 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 1.0.0
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *77734750
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: jeweler
|
82
|
-
requirement: &
|
82
|
+
requirement: &77734400 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: 1.8.3
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *77734400
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: rcov
|
93
|
-
requirement: &
|
93
|
+
requirement: &77734060 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,7 +98,7 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *77734060
|
102
102
|
description: CI-Joe alike CI system called Heidi.
|
103
103
|
email: hartog@organisedminds.com
|
104
104
|
executables:
|
@@ -164,7 +164,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
164
164
|
version: '0'
|
165
165
|
segments:
|
166
166
|
- 0
|
167
|
-
hash:
|
167
|
+
hash: 967555357
|
168
168
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
169
169
|
none: false
|
170
170
|
requirements:
|