share/rbbt_commands/workflow/example in rbbt-util-5.8.3 vs share/rbbt_commands/workflow/example in rbbt-util-5.8.4
- old
+ new
@@ -8,28 +8,39 @@
Log.info "Running example #{Log.color :magenta, workflow.to_s}##{Log.color :yellow, task} -- #{Log.color :cyan, name}"
example_dir = workflow.libdir.examples[task][name].find
Log.debug "Using #{example_dir}"
- ARGV.replace([workflow.to_s, task, '--load_inputs', example_dir, '--jobname', name,'--pf'] + $saved_args)
+ ARGV.replace([workflow.to_s, task, '--load_inputs', example_dir, '--jobname', name,'-pf'] + $saved_args)
- @pid = Process.fork{
- load Rbbt.share.rbbt_commands.workflow.task.find
- }
- Signal.trap(:INT) do
- begin
- Process.kill "INT", @pid
- ensure
- exit -1
+ path = nil
+ TmpFile.with_file do |res|
+ Open.open(res, :mode => 'w') do |file|
+ @pid = Process.fork{
+ STDOUT.reopen res
+ load Rbbt.share.rbbt_commands.workflow.task.find
+ }
+ file.close
+ Signal.trap(:INT) do
+ begin
+ Process.kill "INT", @pid
+ ensure
+ exit -1
+ end
+ end
+ Process.wait @pid
end
+ path = Open.read(res) if File.exists? res
end
- Process.wait @pid
+ path = "NO RESULT" if path.nil? or path.empty?
if $?.success?
Log.info "#{Log.color :green, "SUCCESS"} #{Log.color :magenta, workflow.to_s}##{Log.color :yellow, task} -- #{Log.color :cyan, name}"
+ return [path, true]
else
Log.info "#{Log.color :red, "ERROR"} #{Log.color :magenta, workflow.to_s}##{Log.color :yellow, task} -- #{Log.color :cyan, name}"
+ return [path, false]
end
end
workflow = ARGV.shift
raise ParameterException if workflow.nil?
@@ -40,16 +51,29 @@
name = ARGV.shift if task
name = nil if name == '--'
$saved_args = ARGV.dup
-
workflow = Workflow.require_workflow workflow
tasks = task ? [task] : workflow.libdir.examples.glob('*').collect{|file| File.basename file }
+task_result = {}
tasks.each do |task|
names = name ? [name] : workflow.libdir.examples[task].glob('*').collect{|file| File.basename file }
names.each do |name|
- run_task workflow, task, name
+ success = run_task workflow, task, name
+ task_result[[task, name]] = success
+ end
+end
+
+task_result.each do |code,res|
+ task, name = code
+ path, success = res
+ if success
+ puts "#{Log.color :green, "SUCCESS"} #{Log.color :magenta, workflow.to_s}##{Log.color :yellow, task} -- #{Log.color :cyan, name}"
+ puts path
+ else
+ puts "#{Log.color :red, "ERROR"} #{Log.color :magenta, workflow.to_s}##{Log.color :yellow, task} -- #{Log.color :cyan, name}"
+ puts path
end
end