rbbt-util 5.23.27 → 5.23.28
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rbbt/tsv/excel.rb +1 -1
- data/lib/rbbt/util/cmd.rb +43 -35
- data/lib/rbbt/util/concurrency/processes.rb +1 -1
- data/lib/rbbt/util/concurrency/processes/worker.rb +2 -1
- data/lib/rbbt/util/config.rb +5 -2
- data/lib/rbbt/util/misc/pipes.rb +1 -0
- data/lib/rbbt/util/open.rb +2 -2
- data/lib/rbbt/workflow.rb +1 -1
- data/lib/rbbt/workflow/step/run.rb +1 -1
- data/share/rbbt_commands/system/clean +6 -4
- data/share/rbbt_commands/workflow/prov +1 -0
- data/test/rbbt/util/test_cmd.rb +14 -2
- 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: 2275f8b0ef9e0fd2bf6a6b964aa0bb8541f7bd35
|
4
|
+
data.tar.gz: 3ddc1b829d1990a27fbbfec708cc41e89a7b4926
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fd83f6e4487f0f36f33720ded3a875cb123c4bb1398b69ab49affb229af0b1b5e63a464ea74bf1a4946929a68bf334087163de762cc1edc6b7ae85c4cd908947
|
7
|
+
data.tar.gz: 19109b2be3083248f31b1fb9cad1596b201f4801566d7c3a608fe24536557e44611f5a224f9cdd1e7a76aab17c7e3834c84037243e2a16254b80b7903319c6d6
|
data/lib/rbbt/tsv/excel.rb
CHANGED
@@ -105,7 +105,7 @@ module TSV
|
|
105
105
|
workbook = Spreadsheet.open Open.open(file)
|
106
106
|
|
107
107
|
if sheet && sheet.to_s =~ /^\d+$/
|
108
|
-
sheet = workbook.worksheets.collect{|s| s.
|
108
|
+
sheet = workbook.worksheets.collect{|s| s.name }[sheet.to_i]
|
109
109
|
end
|
110
110
|
sheet_name = sheet
|
111
111
|
Log.debug "Opening LSX #{file} sheet #{ sheet_name }"
|
data/lib/rbbt/util/cmd.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'rbbt/util/log'
|
2
2
|
require 'stringio'
|
3
|
+
require 'open3'
|
3
4
|
|
4
5
|
module CMD
|
5
6
|
|
@@ -53,50 +54,58 @@ module CMD
|
|
53
54
|
|
54
55
|
in_content = StringIO.new in_content if String === in_content
|
55
56
|
|
56
|
-
sout, serr, sin = Misc.pipe, Misc.pipe, Misc.pipe
|
57
|
+
#sout, serr, sin = Misc.pipe, Misc.pipe, Misc.pipe
|
57
58
|
|
58
|
-
pid = fork {
|
59
|
-
|
60
|
-
|
59
|
+
#pid = fork {
|
60
|
+
# begin
|
61
|
+
# Misc.purge_pipes(sin.last,sout.last,serr.last)
|
61
62
|
|
62
|
-
|
63
|
-
|
64
|
-
|
63
|
+
# sin.last.close
|
64
|
+
# sout.first.close
|
65
|
+
# serr.first.close
|
65
66
|
|
66
|
-
|
67
|
-
|
68
|
-
|
67
|
+
# if IO === in_content
|
68
|
+
# in_content.close if in_content.respond_to?(:close) and not in_content.closed?
|
69
|
+
# end
|
69
70
|
|
70
|
-
|
71
|
-
|
71
|
+
# STDERR.reopen serr.last
|
72
|
+
# serr.last.close
|
72
73
|
|
73
|
-
|
74
|
-
|
74
|
+
# STDIN.reopen sin.first
|
75
|
+
# sin.first.close
|
75
76
|
|
76
|
-
|
77
|
-
|
77
|
+
# STDOUT.reopen sout.last
|
78
|
+
# sout.last.close
|
78
79
|
|
79
|
-
|
80
|
+
# STDOUT.sync = STDERR.sync = true
|
80
81
|
|
81
|
-
|
82
|
+
# exec(ENV, cmd)
|
82
83
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
}
|
84
|
+
# exit(-1)
|
85
|
+
# rescue Exception
|
86
|
+
# Log.debug{ "ProcessFailed: #{$!.message}" } if log
|
87
|
+
# Log.debug{ "Backtrace: \n" + $!.backtrace * "\n" } if log
|
88
|
+
# raise ProcessFailed, $!.message
|
89
|
+
# end
|
90
|
+
#}
|
90
91
|
|
91
|
-
sin.first.close
|
92
|
-
sout.last.close
|
93
|
-
serr.last.close
|
92
|
+
#sin.first.close
|
93
|
+
#sout.last.close
|
94
|
+
#serr.last.close
|
94
95
|
|
95
96
|
|
96
|
-
sin = sin.last
|
97
|
-
sout = sout.first
|
98
|
-
serr = serr.first
|
97
|
+
#sin = sin.last
|
98
|
+
#sout = sout.first
|
99
|
+
#serr = serr.first
|
99
100
|
|
101
|
+
sin, sout, serr, wait_thr = begin
|
102
|
+
Open3.popen3(ENV, cmd)
|
103
|
+
rescue
|
104
|
+
Log.warn $!.message
|
105
|
+
raise ProcessFailed, cmd unless no_fail
|
106
|
+
return
|
107
|
+
end
|
108
|
+
pid = wait_thr.pid
|
100
109
|
|
101
110
|
Log.debug{"CMD: [#{pid}] #{cmd}" if log}
|
102
111
|
|
@@ -160,10 +169,9 @@ module CMD
|
|
160
169
|
out = StringIO.new sout.read
|
161
170
|
sout.close unless sout.closed?
|
162
171
|
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
raise ProcessFailed.new "Command [#{pid}] #{cmd} failed with error status #{$?.exitstatus}.\n#{err}"
|
172
|
+
status = wait_thr.value
|
173
|
+
if not status.success? and not no_fail
|
174
|
+
raise ProcessFailed.new "Command [#{pid}] #{cmd} failed with error status #{status.exitstatus}.\n#{err}"
|
167
175
|
else
|
168
176
|
Log.log err, stderr if Integer === stderr and log
|
169
177
|
end
|
@@ -126,7 +126,7 @@ class RbbtProcessQueue
|
|
126
126
|
@count += 1
|
127
127
|
@total -= 1
|
128
128
|
next unless processes.length > 1
|
129
|
-
last = processes.last
|
129
|
+
last = processes.reject{|p| p.stopping }.last
|
130
130
|
last.stop
|
131
131
|
Log.warn "Removed process #{last.pid} from #{Process.pid} (#{processes.length})"
|
132
132
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'rbbt/util/concurrency/processes/socket'
|
2
2
|
class RbbtProcessQueue
|
3
3
|
class RbbtProcessQueueWorker
|
4
|
-
attr_reader :pid, :queue, :callback_queue, :cleanup, :block
|
4
|
+
attr_reader :pid, :queue, :callback_queue, :cleanup, :block, :stopping
|
5
5
|
|
6
6
|
class Respawn < Exception
|
7
7
|
attr_accessor :payload
|
@@ -277,6 +277,7 @@ class RbbtProcessQueue
|
|
277
277
|
|
278
278
|
def stop
|
279
279
|
begin
|
280
|
+
@stoping = true
|
280
281
|
Process.kill :USR2, @pid
|
281
282
|
rescue Errno::ESRCH
|
282
283
|
rescue Exception
|
data/lib/rbbt/util/config.rb
CHANGED
@@ -84,13 +84,14 @@ module Rbbt::Config
|
|
84
84
|
l =~ /rbbt\/(?:resource\.rb|workflow\.rb)/ or
|
85
85
|
l =~ /rbbt\/resource\/path\.rb/ or
|
86
86
|
l =~ /rbbt\/util\/misc\.rb/ or
|
87
|
+
l =~ /accessor\.rb/ or
|
87
88
|
l =~ /progress-monitor\.rb/
|
88
89
|
}.first.partition(":")
|
89
90
|
|
90
91
|
File.expand_path(file)
|
91
92
|
|
92
93
|
tokens << ("file:" << file)
|
93
|
-
tokens << ("line:" << file << ":" << line)
|
94
|
+
tokens << ("line:" << file << ":" << line.sub(/:in \`.*/,''))
|
94
95
|
|
95
96
|
entries = CACHE[key.to_s]
|
96
97
|
priorities = {}
|
@@ -105,7 +106,9 @@ module Rbbt::Config
|
|
105
106
|
|
106
107
|
return nil if priorities.empty?
|
107
108
|
|
108
|
-
priorities.sort_by{|p,v| p}.first.last.first
|
109
|
+
value = priorities.sort_by{|p,v| p}.first.last.first
|
110
|
+
Log.debug "Value '#{value}' for config key '#{ key }': #{tokens * ", "}"
|
111
|
+
value
|
109
112
|
end
|
110
113
|
|
111
114
|
self.load_config
|
data/lib/rbbt/util/misc/pipes.rb
CHANGED
data/lib/rbbt/util/open.rb
CHANGED
@@ -426,7 +426,7 @@ module Open
|
|
426
426
|
exists_in_repo(*dir_sub_path)
|
427
427
|
else
|
428
428
|
file = file.find if Path === file
|
429
|
-
File.exist?(file)
|
429
|
+
File.exist?(file) #|| File.symlink?(file)
|
430
430
|
end
|
431
431
|
end
|
432
432
|
class << self
|
@@ -711,8 +711,8 @@ module Open
|
|
711
711
|
get_time_from_repo(*dir_sub_path)
|
712
712
|
else
|
713
713
|
file = file.find if Path === file
|
714
|
-
file = Pathname.new(file).realpath.to_s if File.symlink?(file)
|
715
714
|
begin
|
715
|
+
file = Pathname.new(file).realpath.to_s if File.symlink?(file)
|
716
716
|
File.mtime(file)
|
717
717
|
rescue
|
718
718
|
nil
|
data/lib/rbbt/workflow.rb
CHANGED
@@ -315,7 +315,7 @@ module Workflow
|
|
315
315
|
missing_inputs = []
|
316
316
|
task.required_inputs.each do |input|
|
317
317
|
missing_inputs << input if inputs[input].nil?
|
318
|
-
end
|
318
|
+
end if task.required_inputs
|
319
319
|
|
320
320
|
if missing_inputs.length == 1
|
321
321
|
raise ParameterException, "Input #{missing_inputs.first} is required but was not provided or is nil"
|
@@ -436,7 +436,7 @@ class Step
|
|
436
436
|
else
|
437
437
|
e = get_exception
|
438
438
|
if e
|
439
|
-
Log.error "Raising exception in produced job #{
|
439
|
+
Log.error "Raising exception in produced job #{self.path}: #{e.message}"
|
440
440
|
raise e
|
441
441
|
else
|
442
442
|
raise "Error in job: #{self.path}"
|
@@ -97,10 +97,12 @@ TSV.traverse jobs, :_bar => "Checking job status" do |file,i|
|
|
97
97
|
pid = info[:pid]
|
98
98
|
|
99
99
|
status = info[:status].to_s
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
100
|
+
if status != "noinfo"
|
101
|
+
status = :missing if status == "done" and not File.exist? file
|
102
|
+
status = :nopid if status != "done" and pid.nil?
|
103
|
+
status = :dead if status != "done" and pid and not Misc.pid_exists?(pid)
|
104
|
+
status = :sync if status != "done" and File.exist? file
|
105
|
+
end
|
104
106
|
|
105
107
|
status = :dirty if info[:status].to_s == "done" and dirty and Workflow.load_step(file).dirty?
|
106
108
|
if info[:status] == :error
|
data/test/rbbt/util/test_cmd.rb
CHANGED
@@ -35,8 +35,8 @@ class TestCmd < Test::Unit::TestCase
|
|
35
35
|
assert_raise ProcessFailed do CMD.cmd('fake-command', :stderr => true) end
|
36
36
|
assert_raise ProcessFailed do CMD.cmd('ls -fake_option', :stderr => true) end
|
37
37
|
|
38
|
-
assert_nothing_raised ProcessFailed do CMD.cmd('fake-command', :
|
39
|
-
assert_nothing_raised ProcessFailed do CMD.cmd('ls -fake_option', :
|
38
|
+
assert_nothing_raised ProcessFailed do CMD.cmd('fake-command', :no_fail => true, :pipe => true) end
|
39
|
+
assert_nothing_raised ProcessFailed do CMD.cmd('ls -fake_option', :no_fail => true, :pipe => true) end
|
40
40
|
|
41
41
|
assert_raise ProcessFailed do CMD.cmd('fake-command', :stderr => true, :pipe => true).join end
|
42
42
|
assert_raise ProcessFailed do CMD.cmd('ls -fake_option', :stderr => true, :pipe => true).join end
|
@@ -63,4 +63,16 @@ line33
|
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
+
def test_STDIN_close
|
67
|
+
TmpFile.with_file("Hello") do |file|
|
68
|
+
STDIN.close
|
69
|
+
Open.open(file) do |f|
|
70
|
+
io = CMD.cmd("tr 'e' 'E'", :in => f, :pipe => true)
|
71
|
+
txt = io.read
|
72
|
+
io.join
|
73
|
+
assert_equal "HEllo", txt
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
66
78
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbbt-util
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.23.
|
4
|
+
version: 5.23.28
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miguel Vazquez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-11-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|