buildhawk 0.1 → 0.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/HISTORY +5 -0
- data/README.rdoc +4 -2
- data/bin/buildhawk +2 -0
- data/lib/buildhawk.rb +39 -30
- metadata +4 -4
data/HISTORY
CHANGED
@@ -1,2 +1,7 @@
|
|
1
|
+
0.2.0 - 19 November 2010
|
2
|
+
* Depend on json_pure rather than json
|
3
|
+
* Handle times longer than a minute correctly
|
4
|
+
* Does not autorun on require, you must call Buildhawk.run
|
5
|
+
|
1
6
|
0.1.0 - 18 September 2010
|
2
7
|
* First release! Supports basic build time graph, no error checking.
|
data/README.rdoc
CHANGED
@@ -3,9 +3,11 @@
|
|
3
3
|
Historical information about your build, on a webpage!
|
4
4
|
Currently only graphs time taken, as stored in git notes.
|
5
5
|
|
6
|
+
See how it looks: http://rhnh.net/2010/09/18/build-time-graph-with-buildhawk
|
7
|
+
|
6
8
|
== Status
|
7
9
|
|
8
|
-
Pretty raw: hackish script, no error checking, no test suite. I am adding to it as I use on one of my projects. Only checked on ruby 1.9.2.
|
10
|
+
Pretty raw: hackish script, no error checking, no test suite. I am adding to it as I use on one of my projects. Only checked on ruby 1.9.2. Depends on an unreleased experimental branch of TufteGraph (http://github.com/xaviershay/tufte-graph/tree/line).
|
9
11
|
|
10
12
|
== Usage
|
11
13
|
|
@@ -14,7 +16,7 @@ Pretty raw: hackish script, no error checking, no test suite. I am adding to it
|
|
14
16
|
buildhawk --title "My App Name" # In your project directory, output HTML to stdout
|
15
17
|
buildhawk | browser # Using http://gist.github.com/318247
|
16
18
|
|
17
|
-
You need to store the build time in git notes. The following rake task should work for a standard ruby project with rvm. See http://rhnh.net/2010/09/06/storing-build-time-in-git-notes-with-zsh for more explanation.
|
19
|
+
You need to store the build time in git notes. This should be a single float: the build time in seconds. The following rake task should work for a standard ruby project with rvm. See http://rhnh.net/2010/09/06/storing-build-time-in-git-notes-with-zsh for more explanation. Note that `time` does not appear to output consistent enough spacing to be used reliably with cut, you may need to tweak the `cut -f 11 -d` command to pull out the right field.
|
18
20
|
|
19
21
|
namespace :build do
|
20
22
|
desc "Run specs and store the time taken in a git note on HEAD"
|
data/bin/buildhawk
CHANGED
data/lib/buildhawk.rb
CHANGED
@@ -1,37 +1,46 @@
|
|
1
1
|
require 'optparse'
|
2
2
|
require 'erubis'
|
3
|
-
require '
|
4
|
-
|
5
|
-
options = {}
|
6
|
-
optparse = OptionParser.new do|opts|
|
7
|
-
# Set a banner, displayed at the top
|
8
|
-
# of the help screen.
|
9
|
-
opts.banner = "Usage: buildhawk [options]"
|
10
|
-
|
11
|
-
# Define the options, and what they do
|
12
|
-
options[:title] = nil
|
13
|
-
opts.on( '-t', '--title TITLE', 'Set the title of the app' ) do |title|
|
14
|
-
options[:title] = title
|
15
|
-
end
|
3
|
+
require 'json_pure'
|
16
4
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
5
|
+
class Buildhawk
|
6
|
+
def self.run
|
7
|
+
options = {}
|
8
|
+
optparse = OptionParser.new do|opts|
|
9
|
+
# Set a banner, displayed at the top
|
10
|
+
# of the help screen.
|
11
|
+
opts.banner = "Usage: buildhawk [options]"
|
12
|
+
|
13
|
+
# Define the options, and what they do
|
14
|
+
options[:title] = nil
|
15
|
+
opts.on( '-t', '--title TITLE', 'Set the title of the app' ) do |title|
|
16
|
+
options[:title] = title
|
17
|
+
end
|
18
|
+
|
19
|
+
# This displays the help screen, all programs are
|
20
|
+
# assumed to have this option.
|
21
|
+
opts.on( '-h', '--help', 'Display this screen' ) do
|
22
|
+
puts opts
|
23
|
+
exit
|
24
|
+
end
|
25
|
+
end
|
24
26
|
|
25
|
-
optparse.parse!
|
27
|
+
optparse.parse!
|
26
28
|
|
27
|
-
data = `git log --pretty=format:"%h\t%s\t%N" --show-notes=buildtime | egrep "[0-9]$"`
|
28
|
-
data = data.lines.map {|x|
|
29
|
-
|
30
|
-
}.map {|x|
|
31
|
-
|
32
|
-
}.reverse
|
29
|
+
data = `git log --pretty=format:"%h\t%s\t%N" --show-notes=buildtime | egrep "[0-9]$"`
|
30
|
+
data = data.lines.map {|x|
|
31
|
+
x.split("\t")
|
32
|
+
}.map {|x|
|
33
|
+
[to_seconds(x[2].chomp), {:ref => x[0], :subject => x[1..-2] * "\t"}]
|
34
|
+
}.reverse
|
33
35
|
|
34
|
-
input = File.read(File.dirname(__FILE__) + '/template.erb')
|
35
|
-
eruby = Erubis::Eruby.new(input)
|
36
|
+
input = File.read(File.dirname(__FILE__) + '/template.erb')
|
37
|
+
eruby = Erubis::Eruby.new(input)
|
36
38
|
|
37
|
-
puts eruby.result(:data => data, :title => options[:title] || "Untitled")
|
39
|
+
puts eruby.result(:data => data, :title => options[:title] || "Untitled")
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
def self.to_seconds(str)
|
44
|
+
str.split(':').reverse.to_enum(:map).with_index {|x, i| x.to_f * 60 ** i }.inject {|a, b| a + b }
|
45
|
+
end
|
46
|
+
end
|
metadata
CHANGED
@@ -4,8 +4,8 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
version: "0.
|
7
|
+
- 2
|
8
|
+
version: "0.2"
|
9
9
|
platform: ruby
|
10
10
|
authors:
|
11
11
|
- Xavier Shay
|
@@ -13,11 +13,11 @@ autorequire:
|
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
15
|
|
16
|
-
date: 2010-
|
16
|
+
date: 2010-11-19 00:00:00 +11:00
|
17
17
|
default_executable:
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
20
|
-
name:
|
20
|
+
name: json_pure
|
21
21
|
prerelease: false
|
22
22
|
requirement: &id001 !ruby/object:Gem::Requirement
|
23
23
|
none: false
|