multi_timeout 1.0.1 → 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.tar.gz.sig +3 -2
- data/lib/multi_timeout.rb +12 -9
- data/lib/multi_timeout/version.rb +1 -1
- metadata +43 -23
- metadata.gz.sig +0 -0
- checksums.yaml +0 -7
- checksums.yaml.gz.sig +0 -0
data.tar.gz.sig
CHANGED
@@ -1,2 +1,3 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
J�#�*�ľ�YAA����i0��*�PJc
|
2
|
+
*��,�n@~[�py���#��v�@=Q߽�d�_���^�v4Y��I���U���*]}���V�~�?J�tIĔ���6Yy��?���gW)�g�V@/���G]��/�����uM9 cja�4c�CT��At�<T^��^#yr�
|
3
|
+
O��+ ��P����vC�����j�./�2JB.�?D$��3y�bQ�L:�Ĵ���[���f3������i��̍�tN
|
data/lib/multi_timeout.rb
CHANGED
@@ -5,13 +5,14 @@ require "optparse"
|
|
5
5
|
module MultiTimeout
|
6
6
|
module CLI
|
7
7
|
TICK = 1
|
8
|
+
VALID_SIGNAL = /^(-(\d+|[A-Z\d]+))$/
|
8
9
|
|
9
10
|
class << self
|
10
11
|
def run(argv)
|
11
12
|
options = parse_options(argv)
|
12
13
|
command = options[:command]
|
13
14
|
|
14
|
-
pid =
|
15
|
+
pid = fork { exec command }
|
15
16
|
Thread.new do
|
16
17
|
now = 0
|
17
18
|
loop do
|
@@ -21,6 +22,7 @@ module MultiTimeout
|
|
21
22
|
if now >= t
|
22
23
|
options[:timeouts].delete([signal, t])
|
23
24
|
puts "Killing '#{command}' with signal #{signal} after #{now} seconds"
|
25
|
+
STDOUT.flush # wait instantly terminates and sometimes hides puts
|
24
26
|
Process.kill(signal, pid)
|
25
27
|
end
|
26
28
|
end
|
@@ -78,12 +80,13 @@ module MultiTimeout
|
|
78
80
|
timeouts = []
|
79
81
|
signal = nil
|
80
82
|
argv = argv.map do |item|
|
81
|
-
if !signal && item =~
|
83
|
+
if !signal && item =~ VALID_SIGNAL
|
82
84
|
signal = $1
|
83
85
|
next
|
84
|
-
elsif signal
|
85
|
-
|
86
|
-
|
86
|
+
elsif signal
|
87
|
+
signal = signal.sub("-", "")
|
88
|
+
signal = signal.to_i if signal =~ /^\d+$/
|
89
|
+
timeouts << [signal, item.to_i * multi(item)]
|
87
90
|
signal = nil
|
88
91
|
next
|
89
92
|
else
|
@@ -96,10 +99,10 @@ module MultiTimeout
|
|
96
99
|
|
97
100
|
def multi(t)
|
98
101
|
case t
|
99
|
-
when
|
100
|
-
when
|
101
|
-
when
|
102
|
-
when /^\d+$/
|
102
|
+
when /^\d+s$/ then 1
|
103
|
+
when /^\d+m$/ then 60
|
104
|
+
when /^\d+h$/ then 60 * 60
|
105
|
+
when /^\d+$/ then 1
|
103
106
|
else
|
104
107
|
raise "Unknown format for time #{t}"
|
105
108
|
end
|
metadata
CHANGED
@@ -1,13 +1,19 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: multi_timeout
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 19
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 0
|
9
|
+
- 2
|
10
|
+
version: 1.0.2
|
5
11
|
platform: ruby
|
6
|
-
authors:
|
12
|
+
authors:
|
7
13
|
- Michael Grosser
|
8
14
|
autorequire:
|
9
15
|
bindir: bin
|
10
|
-
cert_chain:
|
16
|
+
cert_chain:
|
11
17
|
- |
|
12
18
|
-----BEGIN CERTIFICATE-----
|
13
19
|
MIIDcDCCAligAwIBAgIBATANBgkqhkiG9w0BAQUFADA/MRAwDgYDVQQDDAdtaWNo
|
@@ -30,41 +36,55 @@ cert_chain:
|
|
30
36
|
F5etKHZg0j3eHO31/i2HnswY04lqGImUu6aM5EnijFTB7PPW2KwKKM4+kKDYFdlw
|
31
37
|
/0WV1Ng2/Y6qsHwmqGg2VlYj2h4=
|
32
38
|
-----END CERTIFICATE-----
|
33
|
-
|
39
|
+
|
40
|
+
date: 2014-03-12 00:00:00 Z
|
34
41
|
dependencies: []
|
42
|
+
|
35
43
|
description:
|
36
44
|
email: michael@grosser.it
|
37
|
-
executables:
|
45
|
+
executables:
|
38
46
|
- multi-timeout
|
39
47
|
extensions: []
|
48
|
+
|
40
49
|
extra_rdoc_files: []
|
41
|
-
|
50
|
+
|
51
|
+
files:
|
42
52
|
- MIT-LICENSE
|
43
53
|
- bin/multi-timeout
|
44
54
|
- lib/multi_timeout.rb
|
45
55
|
- lib/multi_timeout/version.rb
|
46
56
|
homepage: https://github.com/grosser/multi_timeout
|
47
|
-
licenses:
|
57
|
+
licenses:
|
48
58
|
- MIT
|
49
|
-
metadata: {}
|
50
59
|
post_install_message:
|
51
60
|
rdoc_options: []
|
52
|
-
|
61
|
+
|
62
|
+
require_paths:
|
53
63
|
- lib
|
54
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
hash: 3
|
70
|
+
segments:
|
71
|
+
- 0
|
72
|
+
version: "0"
|
73
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
hash: 3
|
79
|
+
segments:
|
80
|
+
- 0
|
81
|
+
version: "0"
|
64
82
|
requirements: []
|
83
|
+
|
65
84
|
rubyforge_project:
|
66
|
-
rubygems_version:
|
85
|
+
rubygems_version: 1.8.20
|
67
86
|
signing_key:
|
68
|
-
specification_version:
|
87
|
+
specification_version: 3
|
69
88
|
summary: Use multiple timeouts to soft and then hard kill a command
|
70
89
|
test_files: []
|
90
|
+
|
metadata.gz.sig
CHANGED
Binary file
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: d5adcedd7acbe7bdc5e9bf80656b6155effc28ff
|
4
|
-
data.tar.gz: 6868dc91d8edd301604ae7e30364173348f9a178
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 0522ff701fd8f7733af8121cfb99aac8904b8fcdef470414f5dea742b30b4bbf2eec5b66c47609e37268c27cbb4c0f9faf7b2527f3cbe39b29268875e5ee47f1
|
7
|
-
data.tar.gz: 9f03c222e690f8fdf21866d174bea800a4a87bcef3ad3d3faf1c649cb2d3b3f732c2b9638dd856ff7fca0cbda158ca4b8e12d33fd9a8280863fa9cd88ac93241
|
checksums.yaml.gz.sig
DELETED
Binary file
|