crazy_ivan 0.2.1 → 0.2.2
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/bin/crazy_ivan +15 -0
- data/crazy_ivan.gemspec +2 -2
- data/templates/css/ci.css +5 -0
- data/templates/index.html +56 -22
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.2
|
data/bin/crazy_ivan
CHANGED
@@ -15,16 +15,31 @@ def setup
|
|
15
15
|
Dir.chdir('.ci') do
|
16
16
|
File.open('update', 'w+') do |f|
|
17
17
|
f.puts "#!/usr/bin/env bash"
|
18
|
+
f.puts
|
19
|
+
f.puts "# This script updates your code"
|
20
|
+
f.puts "#"
|
21
|
+
f.puts "# If you're not using a code repository system, this script could just do some"
|
22
|
+
f.puts "# some basic copying commands."
|
23
|
+
f.puts
|
18
24
|
f.puts "git pull"
|
19
25
|
end
|
20
26
|
|
21
27
|
File.open('version', 'w+') do |f|
|
22
28
|
f.puts "#!/usr/bin/env ruby -wKU"
|
29
|
+
f.puts
|
30
|
+
f.puts "# This script grabs a unique hash from your version control system"
|
31
|
+
f.puts "#"
|
32
|
+
f.puts "# If you're not able to use a VCS, this script could just generate a timestamp."
|
33
|
+
f.puts
|
23
34
|
f.puts "puts `git show`[/^commit (.+)$/, 1]"
|
24
35
|
end
|
25
36
|
|
26
37
|
File.open('test', 'w+') do |f|
|
27
38
|
f.puts "#!/usr/bin/env bash"
|
39
|
+
f.puts
|
40
|
+
f.puts "# This script runs your testing suite. For a typical Ruby project running"
|
41
|
+
f.puts "# test-unit this is probably all you need."
|
42
|
+
f.puts
|
28
43
|
f.puts "rake"
|
29
44
|
end
|
30
45
|
|
data/crazy_ivan.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{crazy_ivan}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Edward Ocampo-Gooding"]
|
12
|
-
s.date = %q{2009-
|
12
|
+
s.date = %q{2009-09-21}
|
13
13
|
s.default_executable = %q{crazy_ivan}
|
14
14
|
s.description = %q{Continuous integration should really just be a script that captures the output of running your project update & test commands and presents recent results in a static html page.
|
15
15
|
|
data/templates/css/ci.css
CHANGED
data/templates/index.html
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/html4/loose.dtd">
|
1
3
|
<html>
|
2
4
|
<head>
|
3
5
|
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
@@ -60,35 +62,52 @@
|
|
60
62
|
return report;
|
61
63
|
}
|
62
64
|
|
65
|
+
var expand = function(element) {
|
66
|
+
element.siblings().invoke('show');
|
67
|
+
element.remove();
|
68
|
+
}
|
69
|
+
|
63
70
|
var render = function(template_name, json) {
|
64
71
|
var template = jsontemplate.Template(" \
|
65
72
|
{.section projects} \
|
66
73
|
{.repeated section @} \
|
67
|
-
<
|
68
|
-
|
69
|
-
|
70
|
-
<
|
71
|
-
<th>Version</th> \
|
72
|
-
<th>Update Result</th> \
|
73
|
-
<th>Update Errors</th> \
|
74
|
-
<th>Test Result</th> \
|
75
|
-
<th>Test Errors</th> \
|
76
|
-
</tr> \
|
77
|
-
{.repeated section @} \
|
74
|
+
<div class='project'> \
|
75
|
+
<h2>{name}</h2> \
|
76
|
+
{.section reports} \
|
77
|
+
<table class='reports'> \
|
78
78
|
<tr> \
|
79
|
-
<
|
80
|
-
<
|
81
|
-
<
|
82
|
-
<
|
83
|
-
<td>{test}</td> \
|
84
|
-
<td>{test_error}</td> \
|
79
|
+
<th class='timestamp'>Timestamp</th> \
|
80
|
+
<th class='version'>Version</th> \
|
81
|
+
<th class='update'>Update Result</th> \
|
82
|
+
<th class='test'>Test Result</th> \
|
85
83
|
</tr> \
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
84
|
+
{.repeated section @} \
|
85
|
+
<tr> \
|
86
|
+
<td class='timestamp'>{timestamp}</td> \
|
87
|
+
<td class='version'>{version}</td> \
|
88
|
+
<td class='update'> \
|
89
|
+
<pre>{update}</pre> \
|
90
|
+
{.section update_error} \
|
91
|
+
<div class='error'><pre>{update_error}<pre></div> \
|
92
|
+
{.end} \
|
93
|
+
</td> \
|
94
|
+
<td class='test'> \
|
95
|
+
<pre>{test}</pre> \
|
96
|
+
{.section test_error} \
|
97
|
+
<a href='#' onclick='expand(this)'>Click to see error</a> \
|
98
|
+
<div class='error' style='display: hidden'> \
|
99
|
+
<pre>{test_error}<pre> \
|
100
|
+
</div> \
|
101
|
+
{.end} \
|
102
|
+
</td> \
|
103
|
+
</tr> \
|
104
|
+
{.end} \
|
105
|
+
</table> \
|
106
|
+
{.or} \
|
107
|
+
<p>No test reports found. Please run the `ci` executable.</p> \
|
108
|
+
{.end} \
|
90
109
|
{.end} \
|
91
|
-
|
110
|
+
</div> \
|
92
111
|
{.or} \
|
93
112
|
<p>No projects found.</p> \
|
94
113
|
{.end} \
|
@@ -96,6 +115,21 @@
|
|
96
115
|
|
97
116
|
var html = template.expand(json);
|
98
117
|
$("replace").update(html);
|
118
|
+
|
119
|
+
// Hide all errors by default
|
120
|
+
$$('.error').invoke('hide');
|
121
|
+
|
122
|
+
$$('.project').each(function(project) {
|
123
|
+
var firstResultsError = project.down('td.test').down('.error')
|
124
|
+
|
125
|
+
// When the latest test result has an error (i.e. the project is broken)
|
126
|
+
if(firstResultsError) {
|
127
|
+
project.down('h2').addClassName('error');
|
128
|
+
|
129
|
+
firstResultsError.show();
|
130
|
+
firstResultsError.adjacent('a')[0].onclick();
|
131
|
+
}
|
132
|
+
});
|
99
133
|
}
|
100
134
|
</script>
|
101
135
|
</head>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: crazy_ivan
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Edward Ocampo-Gooding
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-09-21 00:00:00 -04:00
|
13
13
|
default_executable: crazy_ivan
|
14
14
|
dependencies: []
|
15
15
|
|