kommando 0.0.21 → 0.0.22
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.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/CHANGELOG.md +8 -0
- data/examples/shorthands.rb +44 -0
- data/examples/thread_leak.rb +19 -12
- data/examples/when.rb +25 -0
- data/lib/kommando.rb +40 -1
- data/lib/kommando/version.rb +1 -1
- data/lib/kommando/when.rb +8 -3
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5d04e223cee14a391a08470955f57eaa63009148
|
|
4
|
+
data.tar.gz: 58629080acfb3bc56c0f071283a652ea90ebacd5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: bebe0fa396b5e2be603e7454550e11a1098135df56c0e9529bd7bc6a0a2213789146147d36043eff7877a0ff8080fb4d0ec2c2b7dacff2202862d57b45f4d348
|
|
7
|
+
data.tar.gz: 5b6f6f11dae84848a166d9b9ee76150659d1d29feda6f91263b4e3c394e9e92d174a395c94f3ccd8cb3ef66479b8dde9c4a41c5797904b98ee58be66781443f5
|
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.3.
|
|
1
|
+
2.3.3
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
|
+
## 0.0.22
|
|
4
|
+
- FEAT: Global whens with `Kommando.when :timeout block` and clearing with `Kommando.when = nil`
|
|
5
|
+
- FEAT: Context available with `k.when :timeout do |kontextual_k|` and `Kommando.when :timeout |kontextual_k|`
|
|
6
|
+
- FEAT: Global timeout with `Kommando.timeout = 1` and `puts Kommando.timeout`
|
|
7
|
+
- FEAT: Callback `k.when :success` if command was run and exited with zero status
|
|
8
|
+
- FEAT: Callback `k.when :failed` if command did not run or exited with non-zero status
|
|
9
|
+
- FIX: `Kommando.puts` shorthand did not return an instance
|
|
10
|
+
|
|
3
11
|
## 0.0.21
|
|
4
12
|
- FEAT: `k.in.write` as an alias for `k.in <<`
|
|
5
13
|
- FEAT: `k.in.writeln` as an shorthand for `k.in.write "lol\r"`
|
data/examples/shorthands.rb
CHANGED
|
@@ -11,3 +11,47 @@ k.wait
|
|
|
11
11
|
raise "err" unless k.out == "hello"
|
|
12
12
|
|
|
13
13
|
Kommando.puts "$ echo ok"
|
|
14
|
+
|
|
15
|
+
k = Kommando.puts "$ sleep 10", {
|
|
16
|
+
timeout: 0.00001
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
k.when :timeout do
|
|
20
|
+
puts "did timeout as expected."
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
Kommando.timeout = 0.0001
|
|
24
|
+
k = Kommando.new "$ sleep 10"
|
|
25
|
+
k.when :timeout do
|
|
26
|
+
puts "did timeout as expected with global timeout #{Kommando.timeout}"
|
|
27
|
+
end
|
|
28
|
+
k.run
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
Kommando.timeout = 0.0002
|
|
32
|
+
Kommando.when :timeout do
|
|
33
|
+
puts "Global when timeout 1"
|
|
34
|
+
end
|
|
35
|
+
Kommando.when :timeout do
|
|
36
|
+
puts "Global when timeout 2"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
Kommando.run "$ sleep 10"
|
|
40
|
+
|
|
41
|
+
Kommando.timeout = nil
|
|
42
|
+
Kommando.when = nil
|
|
43
|
+
|
|
44
|
+
Kommando.when :success do
|
|
45
|
+
puts "succes callback"
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
Kommando.when :failed do
|
|
49
|
+
puts "failed callback"
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
Kommando.when :exit do
|
|
53
|
+
puts "exit callback"
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
Kommando.run "$ exit 0"
|
|
57
|
+
Kommando.run "$ exit 1"
|
data/examples/thread_leak.rb
CHANGED
|
@@ -1,22 +1,29 @@
|
|
|
1
1
|
require "./lib/kommando"
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Kommando.timeout = 0.1
|
|
4
|
+
Kommando.when :timeout do |k|
|
|
5
|
+
print "t"
|
|
6
|
+
puts k.inspect
|
|
7
|
+
exit 1
|
|
8
|
+
end
|
|
9
|
+
|
|
4
10
|
100.times do
|
|
5
|
-
|
|
6
|
-
timeout: 0.1
|
|
7
|
-
}
|
|
8
|
-
last_k.when :timeout do
|
|
9
|
-
print "t"
|
|
10
|
-
puts last_k.out
|
|
11
|
-
end
|
|
11
|
+
Kommando.run "uptime"
|
|
12
12
|
print "."
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
3.times do
|
|
16
|
+
unless Thread.list.count == 1
|
|
17
|
+
print "w(#{Thread.list.count})"
|
|
18
|
+
sleep 0.01
|
|
19
|
+
else
|
|
20
|
+
break
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
16
24
|
unless Thread.list.count == 1
|
|
17
25
|
puts Thread.list.map(&:inspect).join("\n")
|
|
18
|
-
|
|
19
|
-
raise "Thread leak"
|
|
20
|
-
|
|
26
|
+
raise "Thread leak: #{Thread.list.count}"
|
|
21
27
|
end
|
|
28
|
+
|
|
22
29
|
puts "ok"
|
data/examples/when.rb
CHANGED
|
@@ -92,3 +92,28 @@ end
|
|
|
92
92
|
delta = (Time.now-started).round(1)
|
|
93
93
|
raise "sleep does not work (delta is: #{delta})" unless delta == 0.5
|
|
94
94
|
puts "end"
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
k = Kommando.new "$ sleep 2", {
|
|
98
|
+
timeout: 0.01
|
|
99
|
+
}
|
|
100
|
+
k.when :timeout do |kk|
|
|
101
|
+
puts kk.inspect
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
k.run
|
|
105
|
+
|
|
106
|
+
puts "-- Global --"
|
|
107
|
+
|
|
108
|
+
Kommando.timeout = 0.01
|
|
109
|
+
Kommando.when :timeout do |ks|
|
|
110
|
+
puts ks.inspect
|
|
111
|
+
end
|
|
112
|
+
Kommando.run "$ sleep 2"
|
|
113
|
+
|
|
114
|
+
puts "--"
|
|
115
|
+
Kommando.when :success do |ks|
|
|
116
|
+
puts "out: #{ks.out}"
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
Kommando.run "uptime"
|
data/lib/kommando.rb
CHANGED
|
@@ -8,6 +8,9 @@ require_relative "kommando/when"
|
|
|
8
8
|
|
|
9
9
|
class Kommando
|
|
10
10
|
class << self
|
|
11
|
+
@@timeout = nil
|
|
12
|
+
@@whens = nil
|
|
13
|
+
|
|
11
14
|
def run(cmd, opts={})
|
|
12
15
|
k = Kommando.new cmd, opts
|
|
13
16
|
k.run
|
|
@@ -24,6 +27,25 @@ class Kommando
|
|
|
24
27
|
k = Kommando.new cmd, opts
|
|
25
28
|
k.run
|
|
26
29
|
Kernel.puts k.out
|
|
30
|
+
k
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def timeout
|
|
34
|
+
@@timeout
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def timeout=(value)
|
|
38
|
+
@@timeout=value
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def when(event_name, &block)
|
|
43
|
+
@@whens ||= Kommando::When.new
|
|
44
|
+
@@whens.register event_name, block
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def when=(w)
|
|
48
|
+
@@whens = w
|
|
27
49
|
end
|
|
28
50
|
end
|
|
29
51
|
|
|
@@ -43,7 +65,10 @@ class Kommando
|
|
|
43
65
|
opts[:timeout]
|
|
44
66
|
elsif opts[:timeout].class == Fixnum
|
|
45
67
|
opts[:timeout].to_f
|
|
68
|
+
else
|
|
69
|
+
@timeout = @@timeout
|
|
46
70
|
end
|
|
71
|
+
|
|
47
72
|
@timeout_happened = false
|
|
48
73
|
@kill_happened = false
|
|
49
74
|
@rescue_happened = false
|
|
@@ -75,7 +100,15 @@ class Kommando
|
|
|
75
100
|
@matcher_buffer = ""
|
|
76
101
|
|
|
77
102
|
@whens = {}
|
|
78
|
-
@when = When.new
|
|
103
|
+
@when = When.new(self)
|
|
104
|
+
|
|
105
|
+
if @@whens
|
|
106
|
+
@@whens.instance_variable_get("@whens").each_pair do |event_name, blocks|
|
|
107
|
+
blocks.each do |block|
|
|
108
|
+
@when.register event_name, block
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
79
112
|
end
|
|
80
113
|
|
|
81
114
|
def run_async
|
|
@@ -254,6 +287,11 @@ class Kommando
|
|
|
254
287
|
|
|
255
288
|
@when.fire :timeout if @timeout_happened
|
|
256
289
|
@when.fire :exit
|
|
290
|
+
if @code == 0
|
|
291
|
+
@when.fire :success
|
|
292
|
+
else
|
|
293
|
+
@when.fire :failed
|
|
294
|
+
end
|
|
257
295
|
|
|
258
296
|
debug "run returning true"
|
|
259
297
|
true
|
|
@@ -307,6 +345,7 @@ class Kommando
|
|
|
307
345
|
def raise_after_callbacks(exception)
|
|
308
346
|
@when.fire :error
|
|
309
347
|
@when.fire :exit
|
|
348
|
+
@when.fire :failed
|
|
310
349
|
raise exception
|
|
311
350
|
end
|
|
312
351
|
|
data/lib/kommando/version.rb
CHANGED
data/lib/kommando/when.rb
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
class Kommando::When
|
|
2
|
-
VALID_EVENTS = :start, :retry, :timeout, :error, :exit
|
|
2
|
+
VALID_EVENTS = :start, :retry, :timeout, :error, :exit, :success, :failed
|
|
3
3
|
|
|
4
|
-
def initialize
|
|
4
|
+
def initialize(parent=nil)
|
|
5
|
+
@parent = parent
|
|
5
6
|
@whens = {}
|
|
6
7
|
@fired = []
|
|
7
8
|
end
|
|
@@ -36,7 +37,11 @@ class Kommando::When
|
|
|
36
37
|
debug "firing cbs for #{event_name_as_sym}"
|
|
37
38
|
blocks.each do |block|
|
|
38
39
|
debug "firing cb for #{event_name_as_sym}"
|
|
39
|
-
|
|
40
|
+
if @parent
|
|
41
|
+
block.call(@parent)
|
|
42
|
+
else
|
|
43
|
+
block.call
|
|
44
|
+
end
|
|
40
45
|
debug "fired cb for #{event_name_as_sym}"
|
|
41
46
|
end
|
|
42
47
|
else
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kommando
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.22
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Matti Paksula
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-
|
|
11
|
+
date: 2016-12-07 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -197,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
197
197
|
version: '0'
|
|
198
198
|
requirements: []
|
|
199
199
|
rubyforge_project:
|
|
200
|
-
rubygems_version: 2.5.
|
|
200
|
+
rubygems_version: 2.5.2
|
|
201
201
|
signing_key:
|
|
202
202
|
specification_version: 4
|
|
203
203
|
summary: Command runner with expect-like features
|