buildem 0.0.5 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/Gemfile +2 -0
- data/README.md +25 -2
- data/Rakefile +13 -5
- data/bin/buildem +1 -1
- data/lib/buildem/base.rb +0 -5
- data/lib/buildem/executor.rb +3 -11
- data/lib/buildem/logger.rb +22 -0
- data/lib/buildem/runner.rb +23 -2
- data/lib/buildem/version.rb +1 -1
- data/spec/helper.rb +6 -2
- data/spec/unit/base_spec.rb +18 -0
- data/spec/unit/executor_spec.rb +44 -26
- data/spec/unit/logger_spec.rb +54 -0
- data/spec/unit/runner_spec.rb +47 -11
- data/spec/unit/version_spec.rb +1 -2
- metadata +8 -8
- data/lib/buildem/validator.rb +0 -4
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -2,7 +2,6 @@ Build'em quick, Build'em right
|
|
2
2
|
==============================
|
3
3
|
|
4
4
|
Build'em is a small little script parser that is intended for large build systems.
|
5
|
-
Build'em is still very young :) so be careful using it. Input is always welcome and if there is a feature that you just half to have i'd probably do it.
|
6
5
|
|
7
6
|
|
8
7
|
Features:
|
@@ -44,11 +43,35 @@ Example:
|
|
44
43
|
|
45
44
|
This will give you 5 nano-bots for your unordered tasks
|
46
45
|
|
47
|
-
|
48
46
|
optional run and queued_run options
|
49
47
|
--------------------------
|
50
48
|
* :retry\_amount (Integer that specifies that you want to retry the execution of the provided command. Default is 1 execution.)
|
51
49
|
* :retry\_condition (Integer, regular expression, or string that specifies what a good execution is. Default is 0 if not specified.)
|
52
50
|
* :quit\_on\_error (Boolean that specifies if build'em should quit when an exception happens executing the provided command. Default is true)
|
53
51
|
|
52
|
+
**Notice** If the retry\_condition is not met within the retry\_amount interval an error will be throw unless :quit\_on\_error is set to false
|
53
|
+
|
54
|
+
Logging
|
55
|
+
-------
|
56
|
+
If you wish to log all of the output to a specific file you can do so with an output\_to block
|
57
|
+
|
58
|
+
Example:
|
59
|
+
|
60
|
+
output_to "my_nifty_output_file.txt" do
|
61
|
+
run "./task.sh"
|
62
|
+
run "./another.sh"
|
63
|
+
unordered do
|
64
|
+
queued_run "./some_task.sh"
|
65
|
+
queued_run "./some_task1.sh"
|
66
|
+
queued_run "./some_task2.sh"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
* output\_to parameters
|
54
71
|
|
72
|
+
filename: The filename that you wish to output to (optional, default is output.log)
|
73
|
+
IO capture: possible values :stdout, :stderr etc (optional, default is :stdout)
|
74
|
+
|
75
|
+
output_to do ... will save all stdout output to output.log
|
76
|
+
output_to "another_file.txt" do ... same as above but would be saved to another_file.txt
|
77
|
+
output_to "err.txt", :stderr do ... will output all stderr to err
|
data/Rakefile
CHANGED
@@ -6,14 +6,22 @@ namespace :spec do
|
|
6
6
|
|
7
7
|
desc "Run all of the system specs. [spec=system/foo.rb]"
|
8
8
|
RSpec::Core::RakeTask.new(:system) do |spec|
|
9
|
-
spec.pattern
|
10
|
-
spec.rspec_opts =
|
9
|
+
spec.pattern = 'spec/system/*_spec.rb'
|
10
|
+
spec.rspec_opts = %w{--color'}
|
11
11
|
end
|
12
12
|
|
13
13
|
desc "Run all of the unit specs. [spec=unit/foo.rb]"
|
14
14
|
RSpec::Core::RakeTask.new(:test) do |spec|
|
15
|
-
spec.pattern
|
16
|
-
spec.rspec_opts =
|
15
|
+
spec.pattern = 'spec/unit/*_spec.rb'
|
16
|
+
spec.rspec_opts = %w{--color -f d}
|
17
17
|
end
|
18
18
|
|
19
|
-
|
19
|
+
RSpec::Core::RakeTask.new('test:rcov') do |spec|
|
20
|
+
rm_f "coverage"
|
21
|
+
spec.pattern = 'spec/unit/*_spec.rb'
|
22
|
+
spec.rcov = true
|
23
|
+
spec.rspec_opts = %w{--color}
|
24
|
+
spec.rcov_opts = %w{--exclude spec,gems\/}
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
data/bin/buildem
CHANGED
data/lib/buildem/base.rb
CHANGED
data/lib/buildem/executor.rb
CHANGED
@@ -17,7 +17,7 @@ class BuildEm::Executor
|
|
17
17
|
|
18
18
|
def run
|
19
19
|
optz = argz[1]
|
20
|
-
quit_on_error = (optz[:quit_on_error].nil?
|
20
|
+
quit_on_error = (optz[:quit_on_error].nil? ? true : optz[:quit_on_error])
|
21
21
|
retry_amount = (optz[:retry_amount].nil? ? 1 : optz[:retry_amount])
|
22
22
|
condition = (optz[:retry_condition].nil? ? 0 : optz[:retry_condition])
|
23
23
|
executions = 0
|
@@ -32,18 +32,10 @@ class BuildEm::Executor
|
|
32
32
|
rescue Exception => e
|
33
33
|
if quit_on_error
|
34
34
|
raise e
|
35
|
-
else
|
36
|
-
#put to output log or specified log
|
37
35
|
end
|
38
36
|
end while executions < retry_amount
|
37
|
+
fail "Failed to execute [#{argz[0]}]. Tried #{retry_amount} time(s), expected match was [#{condition}] got [#{@command_exitstatus}]." if quit_on_error
|
39
38
|
@command_exitstatus
|
40
39
|
end
|
41
|
-
|
42
|
-
private
|
43
|
-
|
44
|
-
def redirect_standard_error_and_out
|
45
|
-
""
|
46
|
-
end
|
47
|
-
|
48
|
-
|
40
|
+
|
49
41
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'stringio'
|
2
|
+
module Kernel
|
3
|
+
|
4
|
+
def output_to(filename="output.log", stream=:stdout)
|
5
|
+
if block_given?
|
6
|
+
begin
|
7
|
+
stream = stream.to_s
|
8
|
+
eval "$#{stream} = StringIO.new"
|
9
|
+
yield
|
10
|
+
result = eval("$#{stream}").string
|
11
|
+
ensure
|
12
|
+
eval("$#{stream} = #{stream.upcase}")
|
13
|
+
end
|
14
|
+
else
|
15
|
+
fail "output_to must be used in block format with a 'do' and 'end'."
|
16
|
+
end
|
17
|
+
|
18
|
+
File.open(filename, "w+") {|f| f.puts result }
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
data/lib/buildem/runner.rb
CHANGED
@@ -3,6 +3,7 @@ require 'buildem/base'
|
|
3
3
|
require 'buildem/configuration'
|
4
4
|
require 'buildem/executor'
|
5
5
|
require 'process_pool'
|
6
|
+
require 'buildem/logger'
|
6
7
|
|
7
8
|
module Kernel
|
8
9
|
def unordered
|
@@ -28,8 +29,28 @@ module Kernel
|
|
28
29
|
end
|
29
30
|
|
30
31
|
class BuildEm::Runner
|
32
|
+
|
31
33
|
$jobs = []
|
32
|
-
|
34
|
+
|
35
|
+
def initialize(kernel = Kernel, argv = ARGV)
|
36
|
+
@kernel = kernel
|
37
|
+
@argv = argv
|
38
|
+
end
|
39
|
+
|
40
|
+
def process_standard_in
|
41
|
+
if @argv.empty?
|
42
|
+
output = []
|
43
|
+
while input = @kernel.gets and not input == "start\n"
|
44
|
+
output << input
|
45
|
+
end
|
46
|
+
unless output.empty?
|
47
|
+
output = output.join("\n")
|
48
|
+
@kernel.eval(output)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def start
|
33
54
|
if ARGV.size == 1
|
34
55
|
begin
|
35
56
|
puts "running #{ARGV[0]}"
|
@@ -45,7 +66,7 @@ class BuildEm::Runner
|
|
45
66
|
|
46
67
|
private
|
47
68
|
|
48
|
-
def
|
69
|
+
def usage
|
49
70
|
<<-USAGE
|
50
71
|
|
51
72
|
-----------------------------------------------------------------
|
data/lib/buildem/version.rb
CHANGED
data/spec/helper.rb
CHANGED
@@ -1,12 +1,14 @@
|
|
1
|
+
require "bundler/setup"
|
1
2
|
require 'fileutils'
|
2
3
|
include FileUtils
|
3
4
|
require 'buildem'
|
5
|
+
|
4
6
|
require 'rspec'
|
7
|
+
require 'test/unit'
|
8
|
+
require 'flexmock/test_unit'
|
5
9
|
|
6
10
|
$SPEC_ROOT = File.expand_path(File.dirname(__FILE__))
|
7
11
|
|
8
|
-
require "bundler/setup"
|
9
|
-
|
10
12
|
def require_files filename
|
11
13
|
filename.each do |file|
|
12
14
|
require "#{$SPEC_ROOT}/../lib/buildem/#{file}"
|
@@ -22,6 +24,8 @@ end
|
|
22
24
|
|
23
25
|
RSpec.configure do |config|
|
24
26
|
|
27
|
+
config.mock_with :flexmock
|
28
|
+
|
25
29
|
def expecting_exception(clazz)
|
26
30
|
begin
|
27
31
|
yield
|
data/spec/unit/base_spec.rb
CHANGED
@@ -27,4 +27,22 @@ describe "base" do
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
+
end
|
31
|
+
|
32
|
+
describe Kernel, "exitstatus" do
|
33
|
+
|
34
|
+
it "can get the exit status of the last ran application" do
|
35
|
+
capture(:stdout) { `pwd` }
|
36
|
+
Kernel.exitstatus.should == 0
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
describe Kernel, "run_command" do
|
42
|
+
|
43
|
+
it "can run a command" do
|
44
|
+
flexmock(Kernel) {|k| k.should_receive("`").with("awesome command").and_return("foo man shoe").once}
|
45
|
+
Kernel.run_command("awesome command").should == "foo man shoe"
|
46
|
+
end
|
47
|
+
|
30
48
|
end
|
data/spec/unit/executor_spec.rb
CHANGED
@@ -1,66 +1,84 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__)+"/../helper.rb")
|
2
2
|
require_files "executor"
|
3
3
|
|
4
|
+
describe BuildEm::Executor, "name" do
|
5
|
+
it "has the correct name" do
|
6
|
+
BuildEm::Executor.new(["command",{}]).name.should == BuildEm::Executor
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
4
10
|
describe BuildEm::Executor, "run" do
|
5
11
|
|
6
12
|
before :each do
|
7
|
-
@mock_kernel =
|
8
|
-
@matcher
|
13
|
+
@mock_kernel = flexmock(Kernel)
|
14
|
+
@matcher = flexmock(BuildEm::ConditionMatcher.new)
|
9
15
|
end
|
10
16
|
|
11
|
-
describe "
|
17
|
+
describe "with default options" do
|
12
18
|
|
13
19
|
it "executes the provided command and quits if no retries supplied" do
|
14
20
|
command = "pinky and the brain"
|
15
|
-
|
16
|
-
|
17
|
-
executor.run.should == 8675308
|
21
|
+
run_and_exitstatus_with(command, "FAILURE")
|
22
|
+
capture(:stdout) { BuildEm::Executor.new([command,{}], @mock_kernel, @matcher).run.should == 0 }
|
18
23
|
end
|
19
24
|
|
20
25
|
it "raises an exception when something bad goes on" do
|
21
26
|
command = "foo bar"
|
22
|
-
executor = BuildEm::Executor.new([command, {}], @mock_kernel)
|
23
27
|
@mock_kernel.should_receive("run_command").with(command).and_raise("KA BOOM")
|
24
|
-
expecting_exception("KA BOOM") {
|
28
|
+
capture(:stdout) { expecting_exception("KA BOOM") { BuildEm::Executor.new([command, {}], @mock_kernel, @matcher).run } }
|
25
29
|
end
|
26
30
|
|
27
31
|
end
|
28
32
|
|
29
|
-
describe "
|
33
|
+
describe "command retry interactions" do
|
34
|
+
|
35
|
+
it "executes the provided command 50 times and raises an error when condition is not met" do
|
36
|
+
command = "urr"
|
37
|
+
50.times { run_and_exitstatus_with(command, "FAILURE", -1) }
|
38
|
+
capture(:stdout) { expecting_exception("Failed to execute [urr]. Tried 50 time(s), expected match was [0] got [-1].") { BuildEm::Executor.new([command, {:retry_amount => 50, :quit_on_error => true}], @mock_kernel, @matcher).run.should == -1 } }
|
39
|
+
end
|
30
40
|
|
31
41
|
it "executes the provided command 10 times when condition is not met" do
|
32
42
|
command = "some really cool command"
|
33
|
-
|
34
|
-
10.
|
35
|
-
run_and_exitstatus_with(command, "FAILURE", -1)
|
36
|
-
end
|
37
|
-
executor.run.should == -1
|
43
|
+
10.times { run_and_exitstatus_with(command, "FAILURE", -1) }
|
44
|
+
capture(:stdout) { BuildEm::Executor.new([command, {:retry_amount => 10, :quit_on_error => false}], @mock_kernel, @matcher).run.should == -1 }
|
38
45
|
end
|
39
46
|
|
40
47
|
it "executes the provided command 3 times out of 10 when condition is met after 3 tries" do
|
41
48
|
command = "command_to_run"
|
42
|
-
|
43
|
-
2.times do
|
44
|
-
run_and_exitstatus_with(command, "FAILURE", -1)
|
45
|
-
end
|
49
|
+
2.times { run_and_exitstatus_with(command, "FAILURE", -1) }
|
46
50
|
run_and_exitstatus_with(command, "WINNER", 0)
|
47
|
-
|
51
|
+
capture(:stdout) { BuildEm::Executor.new([command, {:retry_amount => 10}], @mock_kernel, @matcher).run.should == 0 }
|
48
52
|
end
|
49
53
|
|
50
54
|
it "does not raise an exception when something bad goes on if :quit_on_error is false" do
|
51
|
-
argz = ["command_to_run", {:quit_on_error => false}]
|
52
|
-
executor = BuildEm::Executor.new(argz, @mock_kernel)
|
53
55
|
@mock_kernel.should_receive("run_command").with("command_to_run").and_raise("KA BOOM")
|
54
|
-
|
56
|
+
capture(:stdout) { BuildEm::Executor.new(["command_to_run", {:quit_on_error => false}], @mock_kernel, @matcher).run.should == nil }
|
55
57
|
end
|
56
58
|
|
57
59
|
end
|
58
60
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
61
|
+
describe "command can handle conditions" do
|
62
|
+
|
63
|
+
it "is successful when condition is met" do
|
64
|
+
command = "er powel"
|
65
|
+
run_and_exitstatus_with(command, "WINNER", 55, 55)
|
66
|
+
capture(:stdout) { BuildEm::Executor.new([command, {:retry_condition => 55}], @mock_kernel, @matcher).run.should == 55 }
|
67
|
+
end
|
68
|
+
|
69
|
+
it "executes the provided command raises an error when condition is not met" do
|
70
|
+
command = "fooz"
|
71
|
+
run_and_exitstatus_with(command, "FAILURE", -1)
|
72
|
+
capture(:stdout) { expecting_exception("Failed to execute [fooz]. Tried 1 time(s), expected match was [0] got [-1].") { BuildEm::Executor.new([command, {}], @mock_kernel, @matcher).run.should == -1 } }
|
73
|
+
end
|
74
|
+
|
63
75
|
end
|
64
76
|
|
77
|
+
private
|
78
|
+
def run_and_exitstatus_with(command, output, exitstatus=0, condition = 0)
|
79
|
+
@mock_kernel.should_receive(:run_command).with(command).and_return(output).once.ordered
|
80
|
+
@mock_kernel.should_receive(:exitstatus).and_return(exitstatus).once.ordered
|
81
|
+
@matcher.should_receive(:match).with(exitstatus, output, condition).and_return(exitstatus == condition).once.ordered
|
82
|
+
end
|
65
83
|
|
66
84
|
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__)+"/../helper.rb")
|
2
|
+
require_files "logger"
|
3
|
+
require 'tempfile'
|
4
|
+
|
5
|
+
describe Kernel, "output_to" do
|
6
|
+
|
7
|
+
after :each do
|
8
|
+
rm_rf "output.log" if File.exist? "output.log"
|
9
|
+
end
|
10
|
+
|
11
|
+
it "captures multiple lines" do
|
12
|
+
output_to {
|
13
|
+
puts "hi"
|
14
|
+
puts "bye"
|
15
|
+
puts "wooh wooooooh"
|
16
|
+
}
|
17
|
+
File.open("output.log", "r") {|f| f.readlines.size.should == 3}
|
18
|
+
end
|
19
|
+
|
20
|
+
it "captures standard out" do
|
21
|
+
output_to("output.log", :stdout) {
|
22
|
+
puts `pwd`
|
23
|
+
}
|
24
|
+
File.open("output.log", "r") {|f| f.readline.should =~ /buildem/ }
|
25
|
+
end
|
26
|
+
|
27
|
+
it "captures standard error" do
|
28
|
+
output_to("output.log", :stderr) {
|
29
|
+
$stderr.puts "err"
|
30
|
+
}
|
31
|
+
File.open("output.log", "r") {|f| f.readlines.should == ["err\n"] }
|
32
|
+
end
|
33
|
+
|
34
|
+
it "captures standard out by default" do
|
35
|
+
output_to { puts "hi" }
|
36
|
+
File.open("output.log", "r") {|f| f.readlines.should == ["hi\n"] }
|
37
|
+
end
|
38
|
+
|
39
|
+
it "writes output to default filename of output.log" do
|
40
|
+
output_to { puts "hi" }
|
41
|
+
File.exist?("output.log").should == true
|
42
|
+
end
|
43
|
+
|
44
|
+
it "writes to a provided filename" do
|
45
|
+
output_to ("woowoo.txt") { puts "heee-che-bon" }
|
46
|
+
File.open("woowoo.txt", "r") {|f| f.readlines.should == ["heee-che-bon\n"] }
|
47
|
+
rm_rf "woowoo.txt"
|
48
|
+
end
|
49
|
+
|
50
|
+
it "throws an exception if a block is not given" do
|
51
|
+
expecting_exception("output_to must be used in block format with a 'do' and 'end'.") { Kernel.output_to }
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
data/spec/unit/runner_spec.rb
CHANGED
@@ -1,29 +1,65 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__)+"/../helper.rb")
|
2
2
|
require_files "runner"
|
3
3
|
|
4
|
+
describe BuildEm::Runner, "process_standard_in" do
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
@mock_kernel = flexmock(:kernel, Kernel)
|
8
|
+
@mock_argv = flexmock(:argv, ARGV)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "can handle user arguments" do
|
12
|
+
@mock_argv.should_receive("empty?").and_return(false).once
|
13
|
+
BuildEm::Runner.new(@mock_kernel, @mock_argv).process_standard_in
|
14
|
+
end
|
15
|
+
|
16
|
+
it "can handle standard in with no value" do
|
17
|
+
@mock_argv.should_receive("empty?").and_return(true).once
|
18
|
+
@mock_kernel.should_receive(:gets).once
|
19
|
+
BuildEm::Runner.new(@mock_kernel, @mock_argv).process_standard_in
|
20
|
+
end
|
21
|
+
|
22
|
+
it "stops when the command 'start' is issued" do
|
23
|
+
@mock_argv.should_receive("empty?").and_return(true).once
|
24
|
+
@mock_kernel.should_receive(:gets).once
|
25
|
+
BuildEm::Runner.new(@mock_kernel, @mock_argv).process_standard_in
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
describe Kernel, "queued_run" do
|
31
|
+
|
32
|
+
it "has the correct number of jobs" do
|
33
|
+
30.times { @mock_kernel.queued_run("foo",{}) }
|
34
|
+
$jobs.size.should == 30
|
35
|
+
$jobs = []
|
36
|
+
end
|
37
|
+
|
38
|
+
it "can add a job" do
|
39
|
+
101.times { |t|
|
40
|
+
@mock_kernel.queued_run("foo",{})
|
41
|
+
$jobs.size.should == t+1
|
42
|
+
}
|
43
|
+
$jobs = []
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
4
48
|
describe BuildEm::Runner, "start" do
|
5
49
|
|
6
50
|
it "runs the program" do
|
7
51
|
ARGV.replace ["#{here}/helper/examples/blank_file.buildem"]
|
8
|
-
capture(:stdout) {BuildEm::Runner.start}.strip.should == "running #{here}/helper/examples/blank_file.buildem\nfinished #{here}/helper/examples/blank_file.buildem"
|
52
|
+
capture(:stdout) {BuildEm::Runner.new.start}.strip.should == "running #{here}/helper/examples/blank_file.buildem\nfinished #{here}/helper/examples/blank_file.buildem"
|
9
53
|
end
|
10
54
|
|
11
55
|
it "runs the program" do
|
12
56
|
ARGV.replace ["#{here}/helper/examples/not_there.buildem"]
|
13
|
-
lambda { capture(:stdout) {BuildEm::Runner.start} }.should raise_error(LoadError)
|
57
|
+
lambda { capture(:stdout) {BuildEm::Runner.new.start} }.should raise_error(LoadError)
|
14
58
|
end
|
15
59
|
|
16
60
|
it "spits out usage when the user doesn't supply a filename" do
|
17
61
|
ARGV.replace []
|
18
|
-
capture(:stdout) {BuildEm::Runner.start}.should == usage_banner
|
19
|
-
end
|
20
|
-
|
21
|
-
describe "execution flow" do
|
22
|
-
|
23
|
-
before do
|
24
|
-
|
25
|
-
end
|
26
|
-
|
62
|
+
capture(:stdout) {BuildEm::Runner.new.start}.should == usage_banner
|
27
63
|
end
|
28
64
|
|
29
65
|
private
|
data/spec/unit/version_spec.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: buildem
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
|
+
- 1
|
7
8
|
- 0
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 0.0.5
|
10
|
+
version: 1.0.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jeremy W. Rowe
|
@@ -15,8 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-04-
|
19
|
-
default_executable:
|
18
|
+
date: 2011-04-10 00:00:00 Z
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
22
21
|
name: process_pool
|
@@ -71,8 +70,8 @@ files:
|
|
71
70
|
- lib/buildem/condition_matcher.rb
|
72
71
|
- lib/buildem/configuration.rb
|
73
72
|
- lib/buildem/executor.rb
|
73
|
+
- lib/buildem/logger.rb
|
74
74
|
- lib/buildem/runner.rb
|
75
|
-
- lib/buildem/validator.rb
|
76
75
|
- lib/buildem/version.rb
|
77
76
|
- spec/helper.rb
|
78
77
|
- spec/unit/base_spec.rb
|
@@ -86,9 +85,9 @@ files:
|
|
86
85
|
- spec/unit/helper/examples/sequential.buildem
|
87
86
|
- spec/unit/helper/examples/sequential_with_comments.buildem
|
88
87
|
- spec/unit/helper/examples/sequential_with_config.buildem
|
88
|
+
- spec/unit/logger_spec.rb
|
89
89
|
- spec/unit/runner_spec.rb
|
90
90
|
- spec/unit/version_spec.rb
|
91
|
-
has_rdoc: true
|
92
91
|
homepage: http://github.com/jeremywrowe/buildem
|
93
92
|
licenses: []
|
94
93
|
|
@@ -118,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
118
117
|
requirements: []
|
119
118
|
|
120
119
|
rubyforge_project: buildem
|
121
|
-
rubygems_version: 1.
|
120
|
+
rubygems_version: 1.7.2
|
122
121
|
signing_key:
|
123
122
|
specification_version: 3
|
124
123
|
summary: A simple build script wrapper that allows for concurent tasks
|
@@ -135,5 +134,6 @@ test_files:
|
|
135
134
|
- spec/unit/helper/examples/sequential.buildem
|
136
135
|
- spec/unit/helper/examples/sequential_with_comments.buildem
|
137
136
|
- spec/unit/helper/examples/sequential_with_config.buildem
|
137
|
+
- spec/unit/logger_spec.rb
|
138
138
|
- spec/unit/runner_spec.rb
|
139
139
|
- spec/unit/version_spec.rb
|
data/lib/buildem/validator.rb
DELETED