scout-gear 7.1.0 → 7.3.0
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/.vimproject +65 -2
- data/VERSION +1 -1
- data/bin/scout +5 -1
- data/lib/rbbt-scout.rb +5 -0
- data/lib/scout/concurrent_stream.rb +13 -8
- data/lib/scout/config.rb +168 -0
- data/lib/scout/exceptions.rb +5 -3
- data/lib/scout/indiferent_hash/options.rb +1 -0
- data/lib/scout/indiferent_hash.rb +4 -2
- data/lib/scout/log/color.rb +3 -2
- data/lib/scout/log/progress/report.rb +1 -0
- data/lib/scout/log/progress/util.rb +66 -1
- data/lib/scout/log/progress.rb +5 -3
- data/lib/scout/log.rb +3 -2
- data/lib/scout/misc/helper.rb +31 -0
- data/lib/scout/misc/monitor.rb +4 -1
- data/lib/scout/misc/system.rb +15 -0
- data/lib/scout/misc.rb +2 -0
- data/lib/scout/named_array.rb +68 -0
- data/lib/scout/open/stream.rb +58 -33
- data/lib/scout/path/find.rb +27 -3
- data/lib/scout/path/util.rb +7 -4
- data/lib/scout/persist/serialize.rb +7 -14
- data/lib/scout/persist.rb +46 -12
- data/lib/scout/resource/produce.rb +7 -94
- data/lib/scout/resource/software.rb +176 -0
- data/lib/scout/semaphore.rb +8 -1
- data/lib/scout/tsv/dumper.rb +112 -0
- data/lib/scout/tsv/index.rb +161 -0
- data/lib/scout/tsv/open.rb +128 -0
- data/lib/scout/tsv/parser.rb +230 -30
- data/lib/scout/tsv/path.rb +13 -0
- data/lib/scout/tsv/persist/adapter.rb +367 -0
- data/lib/scout/tsv/persist/fix_width_table.rb +324 -0
- data/lib/scout/tsv/persist/serialize.rb +117 -0
- data/lib/scout/tsv/persist/tokyocabinet.rb +113 -0
- data/lib/scout/tsv/persist.rb +13 -0
- data/lib/scout/tsv/traverse.rb +143 -0
- data/lib/scout/tsv/util/filter.rb +303 -0
- data/lib/scout/tsv/util/process.rb +73 -0
- data/lib/scout/tsv/util/select.rb +220 -0
- data/lib/scout/tsv/util.rb +82 -0
- data/lib/scout/tsv.rb +16 -3
- data/lib/scout/work_queue/worker.rb +4 -4
- data/lib/scout/work_queue.rb +22 -7
- data/lib/scout/workflow/definition.rb +101 -4
- data/lib/scout/workflow/step/config.rb +18 -0
- data/lib/scout/workflow/step/dependencies.rb +40 -0
- data/lib/scout/workflow/step/file.rb +15 -0
- data/lib/scout/workflow/step/info.rb +35 -4
- data/lib/scout/workflow/step/progress.rb +14 -0
- data/lib/scout/workflow/step/provenance.rb +148 -0
- data/lib/scout/workflow/step.rb +71 -17
- data/lib/scout/workflow/task.rb +10 -5
- data/lib/scout/workflow/usage.rb +3 -1
- data/lib/scout/workflow.rb +11 -3
- data/lib/scout-gear.rb +1 -0
- data/lib/scout.rb +1 -0
- data/scout-gear.gemspec +64 -10
- data/scout_commands/find +1 -1
- data/scout_commands/workflow/task +16 -9
- data/scout_commands/workflow/task_old +2 -2
- data/share/software/install_helpers +523 -0
- data/test/scout/log/test_progress.rb +0 -2
- data/test/scout/misc/test_system.rb +21 -0
- data/test/scout/open/test_stream.rb +160 -1
- data/test/scout/path/test_find.rb +14 -7
- data/test/scout/resource/test_software.rb +24 -0
- data/test/scout/test_config.rb +66 -0
- data/test/scout/test_meta_extension.rb +10 -0
- data/test/scout/test_named_array.rb +19 -0
- data/test/scout/test_persist.rb +96 -0
- data/test/scout/test_tmpfile.rb +1 -1
- data/test/scout/test_tsv.rb +50 -1
- data/test/scout/test_work_queue.rb +41 -13
- data/test/scout/tsv/persist/test_adapter.rb +44 -0
- data/test/scout/tsv/persist/test_fix_width_table.rb +134 -0
- data/test/scout/tsv/persist/test_tokyocabinet.rb +92 -0
- data/test/scout/tsv/test_dumper.rb +44 -0
- data/test/scout/tsv/test_index.rb +156 -0
- data/test/scout/tsv/test_open.rb +9 -0
- data/test/scout/tsv/test_parser.rb +114 -3
- data/test/scout/tsv/test_persist.rb +43 -0
- data/test/scout/tsv/test_traverse.rb +116 -0
- data/test/scout/tsv/test_util.rb +23 -0
- data/test/scout/tsv/util/test_filter.rb +188 -0
- data/test/scout/tsv/util/test_process.rb +47 -0
- data/test/scout/tsv/util/test_select.rb +44 -0
- data/test/scout/work_queue/test_worker.rb +66 -9
- data/test/scout/workflow/step/test_dependencies.rb +25 -0
- data/test/scout/workflow/step/test_info.rb +15 -17
- data/test/scout/workflow/step/test_load.rb +19 -21
- data/test/scout/workflow/step/test_provenance.rb +25 -0
- data/test/scout/workflow/test_step.rb +206 -10
- data/test/scout/workflow/test_task.rb +0 -3
- data/test/test_helper.rb +9 -1
- metadata +50 -6
data/lib/scout/workflow/step.rb
CHANGED
@@ -2,15 +2,26 @@ require_relative '../path'
|
|
2
2
|
require_relative '../persist'
|
3
3
|
require_relative 'step/info'
|
4
4
|
require_relative 'step/load'
|
5
|
+
require_relative 'step/file'
|
6
|
+
require_relative 'step/dependencies'
|
7
|
+
require_relative 'step/provenance'
|
8
|
+
require_relative 'step/config'
|
9
|
+
require_relative 'step/progress'
|
5
10
|
|
6
11
|
class Step
|
7
12
|
|
8
|
-
attr_accessor :path, :inputs, :dependencies, :task
|
13
|
+
attr_accessor :path, :inputs, :dependencies, :task, :tee_copies
|
9
14
|
def initialize(path, inputs = nil, dependencies = nil, &task)
|
10
15
|
@path = path
|
11
16
|
@inputs = inputs
|
12
17
|
@dependencies = dependencies
|
13
18
|
@task = task
|
19
|
+
@mutex = Mutex.new
|
20
|
+
@tee_copies = 1
|
21
|
+
end
|
22
|
+
|
23
|
+
def synchronize(&block)
|
24
|
+
@mutex.synchronize(&block)
|
14
25
|
end
|
15
26
|
|
16
27
|
def inputs
|
@@ -48,15 +59,20 @@ class Step
|
|
48
59
|
@task_name ||= @task.name if @task.respond_to?(:name)
|
49
60
|
end
|
50
61
|
|
62
|
+
def workflow
|
63
|
+
@task.workflow if @task
|
64
|
+
end
|
65
|
+
|
51
66
|
def exec
|
52
|
-
self.instance_exec(*inputs, &task)
|
67
|
+
@result = self.instance_exec(*inputs, &task)
|
53
68
|
end
|
54
69
|
|
55
70
|
attr_reader :result
|
56
71
|
def run
|
57
72
|
return @result || self.load if done?
|
58
|
-
|
59
|
-
|
73
|
+
prepare_dependencies
|
74
|
+
run_dependencies
|
75
|
+
@result = Persist.persist(name, type, :path => path, :tee_copies => tee_copies) do
|
60
76
|
begin
|
61
77
|
merge_info :status => :start, :start => Time.now,
|
62
78
|
:pid => Process.pid, :pid_hostname => ENV["HOSTNAME"],
|
@@ -64,17 +80,34 @@ class Step
|
|
64
80
|
:dependencies => dependencies.collect{|d| d.path }
|
65
81
|
|
66
82
|
@result = exec
|
83
|
+
@result = @result.respond_to?(:stream) ? @result.stream : @result
|
84
|
+
@result
|
85
|
+
rescue Exception => e
|
86
|
+
merge_info :status => :error, :exception => e
|
87
|
+
raise e
|
67
88
|
ensure
|
68
|
-
if
|
69
|
-
|
89
|
+
if ! (error? || aborted?)
|
90
|
+
if streaming?
|
91
|
+
ConcurrentStream.setup(@result) do
|
92
|
+
merge_info :status => :done, :end => Time.now
|
93
|
+
end
|
94
|
+
|
95
|
+
@result.abort_callback = proc do |exception|
|
96
|
+
if Aborted === exception || Interrupt === exception
|
97
|
+
merge_info :status => :aborted, :end => Time.now
|
98
|
+
else
|
99
|
+
merge_info :status => :error, :exception => exception, :end => Time.now
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
log :streaming
|
104
|
+
else
|
70
105
|
merge_info :status => :done, :end => Time.now
|
71
106
|
end
|
72
|
-
log :streaming
|
73
|
-
else
|
74
|
-
merge_info :status => :done, :end => Time.now
|
75
107
|
end
|
76
108
|
end
|
77
109
|
end
|
110
|
+
@result
|
78
111
|
end
|
79
112
|
|
80
113
|
def done?
|
@@ -82,19 +115,35 @@ class Step
|
|
82
115
|
end
|
83
116
|
|
84
117
|
def streaming?
|
85
|
-
IO === @result || StringIO === @result
|
118
|
+
@take_stream || IO === @result || StringIO === @result
|
86
119
|
end
|
87
120
|
|
88
121
|
def stream
|
89
|
-
|
90
|
-
|
122
|
+
synchronize do
|
123
|
+
if streaming? && ! @result.nil?
|
124
|
+
if @result.next
|
125
|
+
Log.debug "Taking result #{Log.fingerprint @result} next #{Log.fingerprint @result.next}"
|
126
|
+
else
|
127
|
+
Log.debug "Taking result #{Log.fingerprint @result}"
|
128
|
+
end
|
129
|
+
@take_stream, @result = @result, @result.next
|
130
|
+
@take_stream
|
131
|
+
elsif done?
|
132
|
+
Open.open(self.path)
|
133
|
+
else
|
134
|
+
if running?
|
135
|
+
nil
|
136
|
+
else
|
137
|
+
exec
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
91
141
|
end
|
92
142
|
|
93
143
|
def join
|
94
|
-
if streaming?
|
95
|
-
|
96
|
-
|
97
|
-
end
|
144
|
+
io = self.stream if streaming?
|
145
|
+
Open.consume_stream(io, false) if io
|
146
|
+
self
|
98
147
|
end
|
99
148
|
|
100
149
|
def produce
|
@@ -109,8 +158,13 @@ class Step
|
|
109
158
|
end
|
110
159
|
|
111
160
|
def clean
|
161
|
+
@take_stream = nil
|
162
|
+
@result = nil
|
163
|
+
@info = nil
|
164
|
+
@info_load_time = nil
|
112
165
|
Open.rm path if Open.exist?(path)
|
113
166
|
Open.rm info_file if Open.exist?(info_file)
|
167
|
+
Open.rm_rf files_dir if Open.exist?(files_dir)
|
114
168
|
end
|
115
169
|
|
116
170
|
def recursive_clean
|
@@ -128,6 +182,6 @@ class Step
|
|
128
182
|
end
|
129
183
|
|
130
184
|
def digest_str
|
131
|
-
path
|
185
|
+
path.dup
|
132
186
|
end
|
133
187
|
end
|
data/lib/scout/workflow/task.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
require_relative '../meta_extension'
|
2
|
+
require_relative '../named_array'
|
2
3
|
require_relative 'step'
|
3
4
|
require_relative 'task/inputs'
|
4
5
|
|
5
6
|
module Task
|
6
7
|
extend MetaExtension
|
7
|
-
extension_attr :name, :type, :inputs, :deps, :directory, :description
|
8
|
+
extension_attr :name, :type, :inputs, :deps, :directory, :description, :returns, :extension, :workflow
|
8
9
|
|
9
10
|
DEFAULT_NAME = "Default"
|
10
11
|
|
@@ -24,7 +25,7 @@ module Task
|
|
24
25
|
return inputs if deps.nil?
|
25
26
|
deps.inject(inputs) do |acc,dep|
|
26
27
|
workflow, task = dep
|
27
|
-
next if workflow.nil?
|
28
|
+
next acc if workflow.nil? || task.nil?
|
28
29
|
acc += workflow.tasks[task].recursive_inputs
|
29
30
|
end
|
30
31
|
end
|
@@ -54,7 +55,7 @@ module Task
|
|
54
55
|
resolved_inputs = {}
|
55
56
|
inputs.each do |k,v|
|
56
57
|
if Symbol === v
|
57
|
-
input_dep = dependencies.select{|d| d.task_name == v}.first
|
58
|
+
input_dep = dependencies.select{|d| d.task_name == v }.first
|
58
59
|
resolved_inputs[k] = input_dep || inputs[v] || k
|
59
60
|
else
|
60
61
|
resolved_inputs[k] = v
|
@@ -144,12 +145,16 @@ module Task
|
|
144
145
|
|
145
146
|
if non_default_inputs.any?
|
146
147
|
hash = Misc.digest(:inputs => input_hash, :dependencies => dependencies)
|
147
|
-
Log.debug "Hash #{name} - #{hash}: #{
|
148
|
+
Log.debug "Hash #{name} - #{hash}: #{Log.fingerprint(:inputs => inputs, :non_default_inputs => non_default_inputs, :dependencies => dependencies)}"
|
148
149
|
id = [id, hash] * "_"
|
149
150
|
end
|
150
151
|
|
151
152
|
path = directory[id]
|
152
153
|
|
153
|
-
|
154
|
+
Persist.memory(path) do
|
155
|
+
Log.debug "Creating job #{path} #{Log.fingerprint inputs} #{Log.fingerprint dependencies}"
|
156
|
+
NamedArray.setup(inputs, @inputs.collect{|i| i[0] }) if @inputs
|
157
|
+
Step.new path.find, inputs, dependencies, &self
|
158
|
+
end
|
154
159
|
end
|
155
160
|
end
|
data/lib/scout/workflow/usage.rb
CHANGED
@@ -20,6 +20,7 @@ module Task
|
|
20
20
|
seen = inputs.collect{|name,_| name }
|
21
21
|
dep_inputs = {}
|
22
22
|
deps.each do |dep_workflow,task_name|
|
23
|
+
next if task_name.nil?
|
23
24
|
task = dep_workflow.tasks[task_name]
|
24
25
|
next if task.inputs.nil?
|
25
26
|
inputs = task.inputs.reject{|name, _| seen.include? name }
|
@@ -34,7 +35,6 @@ module Task
|
|
34
35
|
str.puts Log.color :yellow, dep + ":"
|
35
36
|
str.puts
|
36
37
|
str.puts SOPT.input_array_doc(inputs)
|
37
|
-
str.puts
|
38
38
|
end
|
39
39
|
|
40
40
|
#task_inputs = dep_inputs deps, workflow
|
@@ -72,6 +72,7 @@ module Task
|
|
72
72
|
str.puts
|
73
73
|
end
|
74
74
|
|
75
|
+
str.puts
|
75
76
|
str.puts Log.color(:magenta, "Returns: ") << Log.color(:blue, type.to_s) << "\n"
|
76
77
|
str.puts
|
77
78
|
|
@@ -122,6 +123,7 @@ module Workflow
|
|
122
123
|
next if seen.include? dep
|
123
124
|
seen << dep
|
124
125
|
workflow, task, *rest = dep
|
126
|
+
next if task.nil?
|
125
127
|
|
126
128
|
key = [workflow, task]
|
127
129
|
|
data/lib/scout/workflow.rb
CHANGED
@@ -24,17 +24,25 @@ module Workflow
|
|
24
24
|
base.libdir = Path.setup(libdir).tap{|p| p.resource = base}
|
25
25
|
end
|
26
26
|
|
27
|
-
def self.require_workflow(
|
28
|
-
workflow =
|
27
|
+
def self.require_workflow(workflow_name)
|
28
|
+
workflow = workflow_name
|
29
|
+
workflow = Path.setup('workflows')[workflow_name]["workflow.rb"] unless Open.exists?(workflow)
|
30
|
+
workflow = Path.setup('workflows')[Misc.snake_case(workflow_name)]["workflow.rb"] unless Open.exists?(workflow)
|
31
|
+
workflow = Path.setup('workflows')[Misc.camel_case(workflow_name)]["workflow.rb"] unless Open.exists?(workflow)
|
29
32
|
if Open.exists?(workflow)
|
30
33
|
workflow = workflow.find if Path === workflow
|
34
|
+
$LOAD_PATH.unshift(File.join(File.dirname(workflow), 'lib'))
|
31
35
|
load workflow
|
36
|
+
else
|
37
|
+
raise "Workflow #{workflow_name} not found"
|
32
38
|
end
|
33
39
|
workflows.last
|
34
40
|
end
|
35
41
|
|
36
42
|
def job(name, *args)
|
37
43
|
task = tasks[name]
|
38
|
-
task.job(*args)
|
44
|
+
step = task.job(*args)
|
45
|
+
step.extend step_module
|
46
|
+
step
|
39
47
|
end
|
40
48
|
end
|
data/lib/scout-gear.rb
CHANGED
data/lib/scout.rb
CHANGED
data/scout-gear.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: scout-gear 7.
|
5
|
+
# stub: scout-gear 7.3.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "scout-gear".freeze
|
9
|
-
s.version = "7.
|
9
|
+
s.version = "7.3.0"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib".freeze]
|
13
13
|
s.authors = ["Miguel Vazquez".freeze]
|
14
|
-
s.date = "2023-05-
|
14
|
+
s.date = "2023-05-12"
|
15
15
|
s.description = "Temporary files, logs, etc.".freeze
|
16
16
|
s.email = "mikisvaz@gmail.com".freeze
|
17
17
|
s.executables = ["scout".freeze]
|
@@ -28,10 +28,12 @@ Gem::Specification.new do |s|
|
|
28
28
|
"Rakefile",
|
29
29
|
"VERSION",
|
30
30
|
"bin/scout",
|
31
|
+
"lib/rbbt-scout.rb",
|
31
32
|
"lib/scout-gear.rb",
|
32
33
|
"lib/scout.rb",
|
33
34
|
"lib/scout/cmd.rb",
|
34
35
|
"lib/scout/concurrent_stream.rb",
|
36
|
+
"lib/scout/config.rb",
|
35
37
|
"lib/scout/exceptions.rb",
|
36
38
|
"lib/scout/indiferent_hash.rb",
|
37
39
|
"lib/scout/indiferent_hash/case_insensitive.rb",
|
@@ -48,8 +50,11 @@ Gem::Specification.new do |s|
|
|
48
50
|
"lib/scout/misc/digest.rb",
|
49
51
|
"lib/scout/misc/filesystem.rb",
|
50
52
|
"lib/scout/misc/format.rb",
|
53
|
+
"lib/scout/misc/helper.rb",
|
51
54
|
"lib/scout/misc/insist.rb",
|
52
55
|
"lib/scout/misc/monitor.rb",
|
56
|
+
"lib/scout/misc/system.rb",
|
57
|
+
"lib/scout/named_array.rb",
|
53
58
|
"lib/scout/open.rb",
|
54
59
|
"lib/scout/open/lock.rb",
|
55
60
|
"lib/scout/open/remote.rb",
|
@@ -68,6 +73,7 @@ Gem::Specification.new do |s|
|
|
68
73
|
"lib/scout/resource/produce.rb",
|
69
74
|
"lib/scout/resource/produce/rake.rb",
|
70
75
|
"lib/scout/resource/scout.rb",
|
76
|
+
"lib/scout/resource/software.rb",
|
71
77
|
"lib/scout/resource/util.rb",
|
72
78
|
"lib/scout/semaphore.rb",
|
73
79
|
"lib/scout/simple_opt.rb",
|
@@ -78,7 +84,21 @@ Gem::Specification.new do |s|
|
|
78
84
|
"lib/scout/simple_opt/setup.rb",
|
79
85
|
"lib/scout/tmpfile.rb",
|
80
86
|
"lib/scout/tsv.rb",
|
87
|
+
"lib/scout/tsv/dumper.rb",
|
88
|
+
"lib/scout/tsv/index.rb",
|
89
|
+
"lib/scout/tsv/open.rb",
|
81
90
|
"lib/scout/tsv/parser.rb",
|
91
|
+
"lib/scout/tsv/path.rb",
|
92
|
+
"lib/scout/tsv/persist.rb",
|
93
|
+
"lib/scout/tsv/persist/adapter.rb",
|
94
|
+
"lib/scout/tsv/persist/fix_width_table.rb",
|
95
|
+
"lib/scout/tsv/persist/serialize.rb",
|
96
|
+
"lib/scout/tsv/persist/tokyocabinet.rb",
|
97
|
+
"lib/scout/tsv/traverse.rb",
|
98
|
+
"lib/scout/tsv/util.rb",
|
99
|
+
"lib/scout/tsv/util/filter.rb",
|
100
|
+
"lib/scout/tsv/util/process.rb",
|
101
|
+
"lib/scout/tsv/util/select.rb",
|
82
102
|
"lib/scout/work_queue.rb",
|
83
103
|
"lib/scout/work_queue/socket.rb",
|
84
104
|
"lib/scout/work_queue/worker.rb",
|
@@ -86,8 +106,13 @@ Gem::Specification.new do |s|
|
|
86
106
|
"lib/scout/workflow/definition.rb",
|
87
107
|
"lib/scout/workflow/documentation.rb",
|
88
108
|
"lib/scout/workflow/step.rb",
|
109
|
+
"lib/scout/workflow/step/config.rb",
|
110
|
+
"lib/scout/workflow/step/dependencies.rb",
|
111
|
+
"lib/scout/workflow/step/file.rb",
|
89
112
|
"lib/scout/workflow/step/info.rb",
|
90
113
|
"lib/scout/workflow/step/load.rb",
|
114
|
+
"lib/scout/workflow/step/progress.rb",
|
115
|
+
"lib/scout/workflow/step/provenance.rb",
|
91
116
|
"lib/scout/workflow/task.rb",
|
92
117
|
"lib/scout/workflow/task/inputs.rb",
|
93
118
|
"lib/scout/workflow/usage.rb",
|
@@ -104,6 +129,7 @@ Gem::Specification.new do |s|
|
|
104
129
|
"scout_commands/workflow/task_old",
|
105
130
|
"share/color/color_names",
|
106
131
|
"share/color/diverging_colors.hex",
|
132
|
+
"share/software/install_helpers",
|
107
133
|
"test/scout/indiferent_hash/test_case_insensitive.rb",
|
108
134
|
"test/scout/indiferent_hash/test_options.rb",
|
109
135
|
"test/scout/log/test_color.rb",
|
@@ -111,6 +137,7 @@ Gem::Specification.new do |s|
|
|
111
137
|
"test/scout/misc/test_digest.rb",
|
112
138
|
"test/scout/misc/test_filesystem.rb",
|
113
139
|
"test/scout/misc/test_insist.rb",
|
140
|
+
"test/scout/misc/test_system.rb",
|
114
141
|
"test/scout/open/test_lock.rb",
|
115
142
|
"test/scout/open/test_remote.rb",
|
116
143
|
"test/scout/open/test_stream.rb",
|
@@ -122,6 +149,7 @@ Gem::Specification.new do |s|
|
|
122
149
|
"test/scout/persist/test_serialize.rb",
|
123
150
|
"test/scout/resource/test_path.rb",
|
124
151
|
"test/scout/resource/test_produce.rb",
|
152
|
+
"test/scout/resource/test_software.rb",
|
125
153
|
"test/scout/resource/test_util.rb",
|
126
154
|
"test/scout/simple_opt/test_doc.rb",
|
127
155
|
"test/scout/simple_opt/test_get.rb",
|
@@ -129,10 +157,12 @@ Gem::Specification.new do |s|
|
|
129
157
|
"test/scout/simple_opt/test_setup.rb",
|
130
158
|
"test/scout/test_cmd.rb",
|
131
159
|
"test/scout/test_concurrent_stream.rb",
|
160
|
+
"test/scout/test_config.rb",
|
132
161
|
"test/scout/test_indiferent_hash.rb",
|
133
162
|
"test/scout/test_log.rb",
|
134
163
|
"test/scout/test_meta_extension.rb",
|
135
164
|
"test/scout/test_misc.rb",
|
165
|
+
"test/scout/test_named_array.rb",
|
136
166
|
"test/scout/test_open.rb",
|
137
167
|
"test/scout/test_path.rb",
|
138
168
|
"test/scout/test_persist.rb",
|
@@ -142,11 +172,25 @@ Gem::Specification.new do |s|
|
|
142
172
|
"test/scout/test_tsv.rb",
|
143
173
|
"test/scout/test_work_queue.rb",
|
144
174
|
"test/scout/test_workflow.rb",
|
175
|
+
"test/scout/tsv/persist/test_adapter.rb",
|
176
|
+
"test/scout/tsv/persist/test_fix_width_table.rb",
|
177
|
+
"test/scout/tsv/persist/test_tokyocabinet.rb",
|
178
|
+
"test/scout/tsv/test_dumper.rb",
|
179
|
+
"test/scout/tsv/test_index.rb",
|
180
|
+
"test/scout/tsv/test_open.rb",
|
145
181
|
"test/scout/tsv/test_parser.rb",
|
182
|
+
"test/scout/tsv/test_persist.rb",
|
183
|
+
"test/scout/tsv/test_traverse.rb",
|
184
|
+
"test/scout/tsv/test_util.rb",
|
185
|
+
"test/scout/tsv/util/test_filter.rb",
|
186
|
+
"test/scout/tsv/util/test_process.rb",
|
187
|
+
"test/scout/tsv/util/test_select.rb",
|
146
188
|
"test/scout/work_queue/test_socket.rb",
|
147
189
|
"test/scout/work_queue/test_worker.rb",
|
190
|
+
"test/scout/workflow/step/test_dependencies.rb",
|
148
191
|
"test/scout/workflow/step/test_info.rb",
|
149
192
|
"test/scout/workflow/step/test_load.rb",
|
193
|
+
"test/scout/workflow/step/test_provenance.rb",
|
150
194
|
"test/scout/workflow/task/test_inputs.rb",
|
151
195
|
"test/scout/workflow/test_definition.rb",
|
152
196
|
"test/scout/workflow/test_documentation.rb",
|
@@ -159,15 +203,25 @@ Gem::Specification.new do |s|
|
|
159
203
|
]
|
160
204
|
s.homepage = "http://github.com/mikisvaz/scout-gear".freeze
|
161
205
|
s.licenses = ["MIT".freeze]
|
162
|
-
s.rubygems_version = "3.
|
206
|
+
s.rubygems_version = "3.2.15".freeze
|
163
207
|
s.summary = "basic gear for scouts".freeze
|
164
208
|
|
165
|
-
s.specification_version
|
209
|
+
if s.respond_to? :specification_version then
|
210
|
+
s.specification_version = 4
|
211
|
+
end
|
166
212
|
|
167
|
-
s.add_runtime_dependency
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
213
|
+
if s.respond_to? :add_runtime_dependency then
|
214
|
+
s.add_runtime_dependency(%q<term-ansicolor>.freeze, [">= 0"])
|
215
|
+
s.add_development_dependency(%q<rdoc>.freeze, ["~> 3.12"])
|
216
|
+
s.add_development_dependency(%q<bundler>.freeze, ["~> 1.0"])
|
217
|
+
s.add_development_dependency(%q<juwelier>.freeze, ["~> 2.1.0"])
|
218
|
+
s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
|
219
|
+
else
|
220
|
+
s.add_dependency(%q<term-ansicolor>.freeze, [">= 0"])
|
221
|
+
s.add_dependency(%q<rdoc>.freeze, ["~> 3.12"])
|
222
|
+
s.add_dependency(%q<bundler>.freeze, ["~> 1.0"])
|
223
|
+
s.add_dependency(%q<juwelier>.freeze, ["~> 2.1.0"])
|
224
|
+
s.add_dependency(%q<simplecov>.freeze, [">= 0"])
|
225
|
+
end
|
172
226
|
end
|
173
227
|
|
data/scout_commands/find
CHANGED
@@ -69,7 +69,7 @@ end if resource
|
|
69
69
|
|
70
70
|
path = (resource || Scout)[path.dup]
|
71
71
|
|
72
|
-
if where.nil? || where == 'all' || path.
|
72
|
+
if where.nil? || where == 'all' || path.path_maps.include?(where.to_sym)
|
73
73
|
location = path.find(where)
|
74
74
|
|
75
75
|
if Array === location
|
@@ -13,6 +13,7 @@ $ #{$0} [<options>] <workflow> <task>
|
|
13
13
|
-h--help Print this help
|
14
14
|
-jn--job_name* Name to use as job identifier
|
15
15
|
-pf--print_filepath Print the file path
|
16
|
+
-prov--provenance Print the step provenance
|
16
17
|
-cl--clean Clean the last step
|
17
18
|
-rcl--recursive_clean Clean all steps
|
18
19
|
EOF
|
@@ -22,6 +23,7 @@ workflow_name, task_name = ARGV
|
|
22
23
|
raise MissingParameterException.new :workflow if workflow_name.nil?
|
23
24
|
|
24
25
|
workflow = Workflow.require_workflow workflow_name
|
26
|
+
task_name = task_name.to_sym if task_name
|
25
27
|
task = workflow.tasks[task_name.to_sym] if task_name
|
26
28
|
|
27
29
|
options[:help] = true if task.nil?
|
@@ -38,20 +40,25 @@ if options[:help]
|
|
38
40
|
end
|
39
41
|
|
40
42
|
job_options = task.get_SOPT(task)
|
41
|
-
job =
|
43
|
+
job = workflow.job(task_name, options[:job_name], job_options)
|
42
44
|
|
43
45
|
job.recursive_clean if options[:recursive_clean]
|
44
46
|
job.clean if options[:clean]
|
45
47
|
|
46
|
-
|
47
|
-
|
48
|
-
if options[:print_filepath]
|
49
|
-
path = job.path
|
50
|
-
path = path.find if Path === path
|
51
|
-
puts path
|
48
|
+
if options[:provenance]
|
49
|
+
puts Step.prov_report(job)
|
52
50
|
else
|
53
|
-
|
54
|
-
|
51
|
+
job.run unless job.done?
|
52
|
+
|
53
|
+
if options[:print_filepath]
|
54
|
+
job.join
|
55
|
+
path = job.path
|
56
|
+
path = path.find if Path === path
|
57
|
+
puts path
|
58
|
+
else
|
59
|
+
if ! ((c = Open.consume_stream(job.stream, false, STDOUT, false)) && c.end_with?("\n"))
|
60
|
+
puts
|
61
|
+
end
|
55
62
|
end
|
56
63
|
end
|
57
64
|
|
@@ -656,12 +656,12 @@ when (defined?(RemoteStep) and RemoteStep)
|
|
656
656
|
end
|
657
657
|
when Step
|
658
658
|
if res.streaming?
|
659
|
-
io = TSV.
|
659
|
+
io = TSV.stream res
|
660
660
|
Misc.consume_stream(io, false, out)
|
661
661
|
io.join if io.respond_to? :join
|
662
662
|
elsif IO === res.result
|
663
663
|
begin
|
664
|
-
io = res.
|
664
|
+
io = res.stream
|
665
665
|
Misc.consume_stream(io, false, out)
|
666
666
|
io.join if io.respond_to? :join
|
667
667
|
rescue Aborted, Interrupt
|