rbbt-util 5.21.133 → 5.21.134
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/rbbt/workflow.rb +8 -0
- data/lib/rbbt/workflow/accessor.rb +8 -0
- data/lib/rbbt/workflow/step.rb +1 -0
- data/share/rbbt_commands/workflow/info +3 -2
- data/share/rbbt_commands/workflow/prov +35 -6
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9227ad4cb1b0693292f83fa73b32a7e93e394962
|
4
|
+
data.tar.gz: edffcead7218ee6b035ec40cf83ec81000225eec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 71f104a48e0be07359ce59f196818d5fef1dabf9b9a8293bb75243216cd154b48ffce3912911033bfc9981583c43c391d3f22c2d115272e0bf38f1901fb7d5dd
|
7
|
+
data.tar.gz: 909e1acf886e349d1e37a5e3f71c370a4c79abce82d9c05601a12b99dda9d6a4611081aaf19098d3fdd0d89127149263e0454b737fb5f15c8d2ae844f9020e0d
|
data/lib/rbbt/workflow.rb
CHANGED
@@ -405,6 +405,14 @@ module Workflow
|
|
405
405
|
end
|
406
406
|
end
|
407
407
|
|
408
|
+
def self.load_step(path)
|
409
|
+
step = Step.new path
|
410
|
+
step.dependencies = step.info[:dependencies].collect do |task,name,dep_path|
|
411
|
+
Workflow.load_step dep_path
|
412
|
+
end
|
413
|
+
step
|
414
|
+
end
|
415
|
+
|
408
416
|
def load_name(task, name)
|
409
417
|
return remote_tasks[task].load_step(path) if remote_tasks and remote_tasks.include? task
|
410
418
|
task = tasks[task.to_sym] if String === task or Symbol === task
|
@@ -919,6 +919,14 @@ module Workflow
|
|
919
919
|
Misc.path_relative_to workdir_find, path
|
920
920
|
end
|
921
921
|
|
922
|
+
def self.workflow_for(path)
|
923
|
+
begin
|
924
|
+
Kernel.const_get File.dirname(File.dirname(path))
|
925
|
+
rescue
|
926
|
+
nil
|
927
|
+
end
|
928
|
+
end
|
929
|
+
|
922
930
|
def task_for(path)
|
923
931
|
if workdir.respond_to? :find
|
924
932
|
workdir_find = workdir.find
|
data/lib/rbbt/workflow/step.rb
CHANGED
@@ -27,7 +27,8 @@ recursive = options.delete :recursive
|
|
27
27
|
|
28
28
|
def get_step(file)
|
29
29
|
file = file.sub(/\.(info|files)/,'')
|
30
|
-
|
30
|
+
step = Workflow.load_step file
|
31
|
+
step
|
31
32
|
end
|
32
33
|
|
33
34
|
def status_msg(status)
|
@@ -84,7 +85,7 @@ exception = info[:exception]
|
|
84
85
|
rest = info.keys - [:inputs, :dependencies, :status, :time_elapsed, :messages, :backtrace, :exception, :pid]
|
85
86
|
|
86
87
|
puts Log.color(:magenta, "File") << ": " << step.path
|
87
|
-
puts Log.color(:magenta, "Status") << ": " << status_msg(status) << ((step.aborted? || step.error?) && step.recoverable_error? ? " (recoverable)" : "" )
|
88
|
+
puts Log.color(:magenta, "Status") << ": " << status_msg(status) << ((step.aborted? || step.error?) && step.recoverable_error? ? " (recoverable)" : "" ) << (step.dirty? ? " (dirty)" : "")
|
88
89
|
puts Log.color(:magenta, "Pid") << ": " << pid_msg(pid, status.to_s == "done")
|
89
90
|
puts Log.color(:magenta, "Time") << ": " << time.to_i.to_s << " sec." if time
|
90
91
|
puts Log.color(:magenta, "Total time") << ": " << total_time.to_i.to_s << " sec." if time
|
@@ -20,17 +20,22 @@ $ rbbt workflow prov <job-result>
|
|
20
20
|
|
21
21
|
-h--help Help
|
22
22
|
-p--plot* draw the dependency plot into <file.png>
|
23
|
+
-i--inputs* List of inputs to print
|
24
|
+
-if--info_fields* List of info fields to print
|
23
25
|
EOF
|
24
26
|
|
25
27
|
SOPT.usage if options[:help]
|
26
28
|
|
29
|
+
$inputs = (options[:inputs] || "").split(",")
|
30
|
+
$info_fields = (options[:info_fields] || "").split(",")
|
31
|
+
|
27
32
|
file = ARGV.shift
|
28
33
|
|
29
34
|
$seen = []
|
30
35
|
def get_step(file)
|
31
36
|
file = file.sub(/\.(info|files)/,'')
|
32
37
|
$seen << file
|
33
|
-
|
38
|
+
Workflow.load_step file
|
34
39
|
end
|
35
40
|
|
36
41
|
def status_msg(status)
|
@@ -53,18 +58,42 @@ def status_msg(status)
|
|
53
58
|
Log.color(color, status.to_s)
|
54
59
|
end
|
55
60
|
|
56
|
-
def report_msg(status, name, path)
|
61
|
+
def report_msg(status, name, path, info = nil)
|
57
62
|
|
58
63
|
parts = path.sub(/\{.*/,'').sub(/#{Regexp.quote(name)}$/,'').split "/"
|
59
64
|
|
60
65
|
task = Log.color(:yellow, parts.pop)
|
61
66
|
workflow = Log.color(:magenta, parts.pop)
|
62
67
|
|
63
|
-
if not Open.remote?(path) and (File.exists?(path) and $main_mtime and ($main_mtime - File.mtime(path)) < 0)
|
64
|
-
status_msg(status.to_s) << " " << [workflow, task, path] * " " << " (#{Log.color(:red, "Mtime out of sync") })
|
68
|
+
str = if not Open.remote?(path) and (File.exists?(path) and $main_mtime and ($main_mtime - File.mtime(path)) < 0)
|
69
|
+
status_msg(status.to_s) << " " << [workflow, task, path] * " " << " (#{Log.color(:red, "Mtime out of sync") })"
|
65
70
|
else
|
66
|
-
status_msg(status.to_s) << " " << [workflow, task, path] * " "
|
71
|
+
status_msg(status.to_s) << " " << [workflow, task, path] * " "
|
72
|
+
end
|
73
|
+
|
74
|
+
if $inputs and $inputs.any?
|
75
|
+
job_inputs = info[:inputs]
|
76
|
+
IndiferentHash.setup(job_inputs)
|
77
|
+
|
78
|
+
$inputs.each do |input|
|
79
|
+
value = job_inputs[input]
|
80
|
+
next if value.nil?
|
81
|
+
value_str = Misc.fingerprint(value)
|
82
|
+
str << " #{input}=#{value_str}"
|
83
|
+
end
|
67
84
|
end
|
85
|
+
|
86
|
+
if $info_fields and $info_fields.any?
|
87
|
+
$info_fields.each do |field|
|
88
|
+
IndiferentHash.setup(info)
|
89
|
+
value = info[field]
|
90
|
+
next if value.nil?
|
91
|
+
value_str = Misc.fingerprint(value)
|
92
|
+
str << " #{field}=#{value_str}"
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
str << "\n"
|
68
97
|
end
|
69
98
|
|
70
99
|
def report(step, offset = 0)
|
@@ -75,7 +104,7 @@ def report(step, offset = 0)
|
|
75
104
|
name = info[:name] || File.basename(path)
|
76
105
|
status = :unsync if status == :done and not File.exist? path
|
77
106
|
str = " " * offset
|
78
|
-
str << report_msg(status, name, path)
|
107
|
+
str << report_msg(status, name, path, info)
|
79
108
|
info[:dependencies].each do |task,name,path|
|
80
109
|
new = ! $seen.include?(path)
|
81
110
|
dep = get_step path
|