execute 0.1.39 → 0.1.40
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/lib/cmd.rb +30 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 061d92584632aa290c94c0b57161ad77951492ea
|
4
|
+
data.tar.gz: b76a1c1fe4ec10e05679e78e94d6c3b8e89cb714
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20a8bd82b602a3768b7a23e7a8527fca44b240ff5651071ed08839bf1760a64499fb4af2631582237a29856668e21ebc27d464393916bc3e5f6b037c6e8b48c8
|
7
|
+
data.tar.gz: 978cc09e2b15a4315110742343cd3d1ab37e16eab5dfbeae704052d459ccecd7fcb1c467d36885db52b833cae933c34f4e769f99b3c4bc6c9f1803d8085304fe
|
data/lib/cmd.rb
CHANGED
@@ -12,6 +12,25 @@ class CMD < Hash
|
|
12
12
|
self[:output] = ''
|
13
13
|
self[:error] = ''
|
14
14
|
|
15
|
+
#1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
|
16
|
+
#5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
|
17
|
+
#9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
|
18
|
+
#13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD
|
19
|
+
#18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN
|
20
|
+
#22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
|
21
|
+
#26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO
|
22
|
+
#30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1
|
23
|
+
#36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5
|
24
|
+
#40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9
|
25
|
+
#44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
|
26
|
+
#48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13
|
27
|
+
#52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9
|
28
|
+
#56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5
|
29
|
+
#60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1
|
30
|
+
#64) SIGRTMAX
|
31
|
+
self[:timeout_signal] = 9
|
32
|
+
self[:timeout_raise_error] = true
|
33
|
+
|
15
34
|
@@default_options.each { |key, value| self[key] = value}
|
16
35
|
options.each { |key, value| self[key] = value} unless(options.nil?)
|
17
36
|
self[:command]=cmd
|
@@ -38,7 +57,8 @@ class CMD < Hash
|
|
38
57
|
puts "exit_code: #{self[:exit_code]}"
|
39
58
|
end
|
40
59
|
|
41
|
-
raise TimeoutError.new(self[:command], self[:timeout]) if(key?(:timed_out))
|
60
|
+
raise TimeoutError.new(self[:command], self[:timeout]) if(key?(:timed_out) && self[:timeout_raise_error])
|
61
|
+
|
42
62
|
if((self[:exit_code] != 0) && !self[:ignore_exit_code])
|
43
63
|
exception_text = "Exit code: #{self[:exit_code]}"
|
44
64
|
exception_text = "#{exception_text}\nError: '#{self[:error]}'"
|
@@ -64,7 +84,7 @@ class CMD < Hash
|
|
64
84
|
sleep(0.1)
|
65
85
|
if((Time.now - start_time).to_f > self[:timeout])
|
66
86
|
self[:timed_out] = true
|
67
|
-
|
87
|
+
interrupt
|
68
88
|
sleep(0.1)
|
69
89
|
end
|
70
90
|
end
|
@@ -104,5 +124,12 @@ class CMD < Hash
|
|
104
124
|
self[:exit_code]=1 unless(self[:exit_code].nil? || (self[:exit_code] == 0))
|
105
125
|
end
|
106
126
|
end
|
107
|
-
|
127
|
+
def interrupt
|
128
|
+
process = []
|
129
|
+
Sys::ProcTable.ps { |p| process << p if(p.ppid == self[:pid]) }
|
130
|
+
Sys::ProcTable.ps { |p| process << p if(p.pid == self[:pid]) }
|
131
|
+
|
132
|
+
process.each { |p| Process.kill(self[:timeout_signal],p.pid) unless(Sys::ProcTable.ps(p.pid).nil?) }
|
133
|
+
Process.waitpid(self[:pid]) unless(Sys::ProcTable.ps(self[:pid]).nil?)
|
134
|
+
end
|
108
135
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: execute
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.40
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin Marshall
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|