dotanuki 0.0.2 → 0.0.3
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/Gemfile +0 -4
- data/dotanuki.gemspec +2 -1
- data/lib/dotanuki.rb +13 -3
- data/lib/dotanuki/version.rb +1 -1
- data/spec/dotanuki_spec.rb +13 -1
- metadata +52 -36
data/Gemfile
CHANGED
data/dotanuki.gemspec
CHANGED
data/lib/dotanuki.rb
CHANGED
@@ -40,10 +40,17 @@ module Dotanuki
|
|
40
40
|
|
41
41
|
def <<(result)
|
42
42
|
raise ArgumentError unless result.is_a?(ExecResult)
|
43
|
+
# TODO merge correctly
|
43
44
|
add(result.stdout, result.stderr, result.status)
|
44
45
|
end
|
45
46
|
end
|
46
47
|
|
48
|
+
def initialize(options={})
|
49
|
+
@defaults = {}
|
50
|
+
@defaults[:on_error] = :exception
|
51
|
+
@defaults.merge!(options)
|
52
|
+
end
|
53
|
+
|
47
54
|
# Execute commands in a block and return an array of ExecResult
|
48
55
|
#
|
49
56
|
# @example
|
@@ -54,12 +61,15 @@ module Dotanuki
|
|
54
61
|
#
|
55
62
|
# TODO this is not thread safe
|
56
63
|
def guard(options={}, &block)
|
64
|
+
opts = @defaults.merge(options)
|
65
|
+
validate_options(opts)
|
57
66
|
@guard = ExecResult.new
|
58
67
|
yield
|
59
68
|
clear_guard
|
60
69
|
rescue ExecError => e
|
61
|
-
|
62
|
-
|
70
|
+
result = clear_guard
|
71
|
+
raise e if opts[:on_error] == :exception
|
72
|
+
result
|
63
73
|
end
|
64
74
|
|
65
75
|
# commands can be a string or an array of strings
|
@@ -102,7 +112,7 @@ module Dotanuki
|
|
102
112
|
|
103
113
|
def validate_options(options)
|
104
114
|
options.each do |option, value|
|
105
|
-
if option == :on_error &&
|
115
|
+
if option == :on_error && ! [:exception, :silent].include?(value)
|
106
116
|
raise ArgumentError, "illegal value for option #{option}: #{value}"
|
107
117
|
end
|
108
118
|
raise ArgumentError, "illegal option: #{option}" if option != :on_error
|
data/lib/dotanuki/version.rb
CHANGED
data/spec/dotanuki_spec.rb
CHANGED
@@ -19,12 +19,24 @@ describe Dotanuki do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
it "should stop when one item fails" do
|
22
|
-
guard do
|
22
|
+
guard(:on_error => :silent) do
|
23
23
|
execute("id")
|
24
24
|
execute("ls /asd")
|
25
25
|
execute("uname -n")
|
26
26
|
end.failed_index.should == 1
|
27
27
|
end
|
28
|
+
|
29
|
+
it "should raise an exception by default on error" do
|
30
|
+
lambda { guard do
|
31
|
+
execute("ls /asd")
|
32
|
+
end }.should raise_error
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should not raise an exception by default on error" do
|
36
|
+
lambda { guard(:on_error => :silent) do
|
37
|
+
execute("ls /asd")
|
38
|
+
end }.should_not raise_error
|
39
|
+
end
|
28
40
|
end
|
29
41
|
|
30
42
|
describe "execute" do
|
metadata
CHANGED
@@ -1,39 +1,58 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: dotanuki
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.3
|
4
5
|
prerelease:
|
5
|
-
version: 0.0.2
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Martin Englund
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
date: 2011-06-01 00:00:00 -07:00
|
12
|
+
date: 2011-06-02 00:00:00.000000000 -07:00
|
14
13
|
default_executable:
|
15
|
-
dependencies:
|
16
|
-
- !ruby/object:Gem::Dependency
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
17
16
|
name: popen4
|
18
|
-
|
19
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
17
|
+
requirement: &2157101940 !ruby/object:Gem::Requirement
|
20
18
|
none: false
|
21
|
-
requirements:
|
22
|
-
- -
|
23
|
-
- !ruby/object:Gem::Version
|
24
|
-
version:
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
25
23
|
type: :runtime
|
26
|
-
|
27
|
-
|
28
|
-
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: *2157101940
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: rspec
|
28
|
+
requirement: &2157101500 !ruby/object:Gem::Requirement
|
29
|
+
none: false
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: *2157101500
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: metric_fu
|
39
|
+
requirement: &2157100960 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ! '>='
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '0'
|
45
|
+
type: :development
|
46
|
+
prerelease: false
|
47
|
+
version_requirements: *2157100960
|
48
|
+
description: A command executioner which doesn't blindly stumble on when a command
|
49
|
+
fails'
|
50
|
+
email:
|
29
51
|
- martin@englund.nu
|
30
52
|
executables: []
|
31
|
-
|
32
53
|
extensions: []
|
33
|
-
|
34
54
|
extra_rdoc_files: []
|
35
|
-
|
36
|
-
files:
|
55
|
+
files:
|
37
56
|
- .autotest
|
38
57
|
- .gitignore
|
39
58
|
- .rspec
|
@@ -49,31 +68,28 @@ files:
|
|
49
68
|
has_rdoc: true
|
50
69
|
homepage: https://github.com/pmenglund/dotanuki
|
51
70
|
licenses: []
|
52
|
-
|
53
71
|
post_install_message:
|
54
72
|
rdoc_options: []
|
55
|
-
|
56
|
-
require_paths:
|
73
|
+
require_paths:
|
57
74
|
- lib
|
58
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
75
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
59
76
|
none: false
|
60
|
-
requirements:
|
61
|
-
- -
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
version:
|
64
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - ! '>='
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0'
|
81
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
65
82
|
none: false
|
66
|
-
requirements:
|
67
|
-
- -
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version:
|
83
|
+
requirements:
|
84
|
+
- - ! '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
70
87
|
requirements: []
|
71
|
-
|
72
88
|
rubyforge_project: dotanuki
|
73
89
|
rubygems_version: 1.6.2
|
74
90
|
signing_key:
|
75
91
|
specification_version: 3
|
76
92
|
summary: Command executioner
|
77
|
-
test_files:
|
93
|
+
test_files:
|
78
94
|
- spec/dotanuki_spec.rb
|
79
95
|
- spec/spec_helper.rb
|