scout-gear 6.0.0 → 7.2.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.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/.vimproject +465 -432
  3. data/VERSION +1 -1
  4. data/bin/scout +5 -1
  5. data/lib/rbbt-scout.rb +5 -0
  6. data/lib/scout/concurrent_stream.rb +6 -2
  7. data/lib/scout/config.rb +168 -0
  8. data/lib/scout/exceptions.rb +9 -0
  9. data/lib/scout/indiferent_hash/options.rb +1 -0
  10. data/lib/scout/indiferent_hash.rb +4 -2
  11. data/lib/scout/log/color.rb +31 -2
  12. data/lib/scout/log/progress/report.rb +1 -0
  13. data/lib/scout/log/progress/util.rb +3 -1
  14. data/lib/scout/log/progress.rb +7 -3
  15. data/lib/scout/log.rb +8 -3
  16. data/lib/scout/misc/digest.rb +1 -3
  17. data/lib/scout/misc/monitor.rb +3 -0
  18. data/lib/scout/misc/system.rb +15 -0
  19. data/lib/scout/misc.rb +1 -0
  20. data/lib/scout/named_array.rb +68 -0
  21. data/lib/scout/open/stream.rb +58 -26
  22. data/lib/scout/path/find.rb +27 -3
  23. data/lib/scout/path/util.rb +7 -4
  24. data/lib/scout/persist/serialize.rb +7 -14
  25. data/lib/scout/persist.rb +21 -1
  26. data/lib/scout/resource/produce.rb +7 -94
  27. data/lib/scout/resource/software.rb +176 -0
  28. data/lib/scout/tsv/dumper.rb +107 -0
  29. data/lib/scout/tsv/index.rb +49 -0
  30. data/lib/scout/tsv/parser.rb +317 -0
  31. data/lib/scout/tsv/path.rb +13 -0
  32. data/lib/scout/tsv/persist/adapter.rb +348 -0
  33. data/lib/scout/tsv/persist/tokyocabinet.rb +113 -0
  34. data/lib/scout/tsv/persist.rb +15 -0
  35. data/lib/scout/tsv/traverse.rb +48 -0
  36. data/lib/scout/tsv/util.rb +24 -0
  37. data/lib/scout/tsv.rb +27 -0
  38. data/lib/scout/work_queue/worker.rb +16 -11
  39. data/lib/scout/work_queue.rb +63 -21
  40. data/lib/scout/workflow/definition.rb +93 -4
  41. data/lib/scout/workflow/step/config.rb +18 -0
  42. data/lib/scout/workflow/step/dependencies.rb +40 -0
  43. data/lib/scout/workflow/step/file.rb +15 -0
  44. data/lib/scout/workflow/step/info.rb +33 -6
  45. data/lib/scout/workflow/step/provenance.rb +148 -0
  46. data/lib/scout/workflow/step.rb +70 -20
  47. data/lib/scout/workflow/task.rb +5 -4
  48. data/lib/scout/workflow/usage.rb +1 -1
  49. data/lib/scout/workflow.rb +11 -3
  50. data/lib/scout-gear.rb +1 -0
  51. data/lib/scout.rb +1 -0
  52. data/scout-gear.gemspec +38 -3
  53. data/scout_commands/find +1 -1
  54. data/scout_commands/workflow/task +16 -10
  55. data/share/software/install_helpers +523 -0
  56. data/test/scout/log/test_progress.rb +0 -2
  57. data/test/scout/misc/test_system.rb +21 -0
  58. data/test/scout/open/test_stream.rb +160 -1
  59. data/test/scout/path/test_find.rb +14 -7
  60. data/test/scout/resource/test_software.rb +24 -0
  61. data/test/scout/test_config.rb +66 -0
  62. data/test/scout/test_meta_extension.rb +10 -0
  63. data/test/scout/test_named_array.rb +19 -0
  64. data/test/scout/test_persist.rb +35 -0
  65. data/test/scout/test_semaphore.rb +1 -1
  66. data/test/scout/test_tmpfile.rb +2 -2
  67. data/test/scout/test_tsv.rb +74 -0
  68. data/test/scout/test_work_queue.rb +63 -8
  69. data/test/scout/tsv/persist/test_adapter.rb +34 -0
  70. data/test/scout/tsv/persist/test_tokyocabinet.rb +92 -0
  71. data/test/scout/tsv/test_dumper.rb +44 -0
  72. data/test/scout/tsv/test_index.rb +64 -0
  73. data/test/scout/tsv/test_parser.rb +173 -0
  74. data/test/scout/tsv/test_persist.rb +36 -0
  75. data/test/scout/tsv/test_traverse.rb +9 -0
  76. data/test/scout/tsv/test_util.rb +0 -0
  77. data/test/scout/work_queue/test_worker.rb +49 -1
  78. data/test/scout/workflow/step/test_dependencies.rb +25 -0
  79. data/test/scout/workflow/step/test_info.rb +15 -17
  80. data/test/scout/workflow/step/test_load.rb +16 -18
  81. data/test/scout/workflow/step/test_provenance.rb +25 -0
  82. data/test/scout/workflow/test_step.rb +206 -10
  83. data/test/scout/workflow/test_task.rb +0 -3
  84. data/test/test_helper.rb +6 -0
  85. metadata +37 -2
@@ -4,7 +4,7 @@ require_relative 'task/inputs'
4
4
 
5
5
  module Task
6
6
  extend MetaExtension
7
- extension_attr :name, :type, :inputs, :deps, :directory, :description
7
+ extension_attr :name, :type, :inputs, :deps, :directory, :description, :returns, :extension, :workflow
8
8
 
9
9
  DEFAULT_NAME = "Default"
10
10
 
@@ -54,7 +54,7 @@ module Task
54
54
  resolved_inputs = {}
55
55
  inputs.each do |k,v|
56
56
  if Symbol === v
57
- input_dep = dependencies.select{|d| d.task_name == v}.first
57
+ input_dep = dependencies.select{|d| d.task_name == v }.first
58
58
  resolved_inputs[k] = input_dep || inputs[v] || k
59
59
  else
60
60
  resolved_inputs[k] = v
@@ -143,13 +143,14 @@ module Task
143
143
  non_default_inputs.concat provided_inputs.keys.select{|k| String === k && k.include?("#") } if Hash === provided_inputs
144
144
 
145
145
  if non_default_inputs.any?
146
- hash = Misc.digest(:inputs => input_hash, :non_default_inputs => non_default_inputs, :dependencies => dependencies)
147
- Log.debug "Hash #{name} - #{hash}: #{Misc.digest_str(:inputs => inputs, :dependencies => dependencies)}"
146
+ hash = Misc.digest(:inputs => input_hash, :dependencies => dependencies)
147
+ Log.debug "Hash #{name} - #{hash}: #{Misc.digest_str(:inputs => inputs, :non_default_inputs => non_default_inputs, :dependencies => dependencies)}"
148
148
  id = [id, hash] * "_"
149
149
  end
150
150
 
151
151
  path = directory[id]
152
152
 
153
+ NamedArray.setup(inputs, @inputs.collect{|i| i[0] }) if @inputs
153
154
  Step.new path.find, inputs, dependencies, &self
154
155
  end
155
156
  end
@@ -34,7 +34,6 @@ module Task
34
34
  str.puts Log.color :yellow, dep + ":"
35
35
  str.puts
36
36
  str.puts SOPT.input_array_doc(inputs)
37
- str.puts
38
37
  end
39
38
 
40
39
  #task_inputs = dep_inputs deps, workflow
@@ -72,6 +71,7 @@ module Task
72
71
  str.puts
73
72
  end
74
73
 
74
+ str.puts
75
75
  str.puts Log.color(:magenta, "Returns: ") << Log.color(:blue, type.to_s) << "\n"
76
76
  str.puts
77
77
 
@@ -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(workflow)
28
- workflow = Path.setup('workflows')[workflow]["workflow.rb"] unless Open.exists?(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
@@ -7,3 +7,4 @@ require_relative 'scout/simple_opt'
7
7
  require_relative 'scout/resource'
8
8
  require_relative 'scout/resource/scout'
9
9
  require_relative 'scout/persist'
10
+ require_relative 'scout/tsv'
data/lib/scout.rb CHANGED
@@ -1 +1,2 @@
1
1
  require 'workflow-scout'
2
+ require 'rbbt-scout'
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 6.0.0 ruby lib
5
+ # stub: scout-gear 7.2.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "scout-gear".freeze
9
- s.version = "6.0.0"
9
+ s.version = "7.2.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-04-29"
14
+ s.date = "2023-05-09"
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",
@@ -50,6 +52,8 @@ Gem::Specification.new do |s|
50
52
  "lib/scout/misc/format.rb",
51
53
  "lib/scout/misc/insist.rb",
52
54
  "lib/scout/misc/monitor.rb",
55
+ "lib/scout/misc/system.rb",
56
+ "lib/scout/named_array.rb",
53
57
  "lib/scout/open.rb",
54
58
  "lib/scout/open/lock.rb",
55
59
  "lib/scout/open/remote.rb",
@@ -68,6 +72,7 @@ Gem::Specification.new do |s|
68
72
  "lib/scout/resource/produce.rb",
69
73
  "lib/scout/resource/produce/rake.rb",
70
74
  "lib/scout/resource/scout.rb",
75
+ "lib/scout/resource/software.rb",
71
76
  "lib/scout/resource/util.rb",
72
77
  "lib/scout/semaphore.rb",
73
78
  "lib/scout/simple_opt.rb",
@@ -77,6 +82,16 @@ Gem::Specification.new do |s|
77
82
  "lib/scout/simple_opt/parse.rb",
78
83
  "lib/scout/simple_opt/setup.rb",
79
84
  "lib/scout/tmpfile.rb",
85
+ "lib/scout/tsv.rb",
86
+ "lib/scout/tsv/dumper.rb",
87
+ "lib/scout/tsv/index.rb",
88
+ "lib/scout/tsv/parser.rb",
89
+ "lib/scout/tsv/path.rb",
90
+ "lib/scout/tsv/persist.rb",
91
+ "lib/scout/tsv/persist/adapter.rb",
92
+ "lib/scout/tsv/persist/tokyocabinet.rb",
93
+ "lib/scout/tsv/traverse.rb",
94
+ "lib/scout/tsv/util.rb",
80
95
  "lib/scout/work_queue.rb",
81
96
  "lib/scout/work_queue/socket.rb",
82
97
  "lib/scout/work_queue/worker.rb",
@@ -84,8 +99,12 @@ Gem::Specification.new do |s|
84
99
  "lib/scout/workflow/definition.rb",
85
100
  "lib/scout/workflow/documentation.rb",
86
101
  "lib/scout/workflow/step.rb",
102
+ "lib/scout/workflow/step/config.rb",
103
+ "lib/scout/workflow/step/dependencies.rb",
104
+ "lib/scout/workflow/step/file.rb",
87
105
  "lib/scout/workflow/step/info.rb",
88
106
  "lib/scout/workflow/step/load.rb",
107
+ "lib/scout/workflow/step/provenance.rb",
89
108
  "lib/scout/workflow/task.rb",
90
109
  "lib/scout/workflow/task/inputs.rb",
91
110
  "lib/scout/workflow/usage.rb",
@@ -102,6 +121,7 @@ Gem::Specification.new do |s|
102
121
  "scout_commands/workflow/task_old",
103
122
  "share/color/color_names",
104
123
  "share/color/diverging_colors.hex",
124
+ "share/software/install_helpers",
105
125
  "test/scout/indiferent_hash/test_case_insensitive.rb",
106
126
  "test/scout/indiferent_hash/test_options.rb",
107
127
  "test/scout/log/test_color.rb",
@@ -109,6 +129,7 @@ Gem::Specification.new do |s|
109
129
  "test/scout/misc/test_digest.rb",
110
130
  "test/scout/misc/test_filesystem.rb",
111
131
  "test/scout/misc/test_insist.rb",
132
+ "test/scout/misc/test_system.rb",
112
133
  "test/scout/open/test_lock.rb",
113
134
  "test/scout/open/test_remote.rb",
114
135
  "test/scout/open/test_stream.rb",
@@ -120,6 +141,7 @@ Gem::Specification.new do |s|
120
141
  "test/scout/persist/test_serialize.rb",
121
142
  "test/scout/resource/test_path.rb",
122
143
  "test/scout/resource/test_produce.rb",
144
+ "test/scout/resource/test_software.rb",
123
145
  "test/scout/resource/test_util.rb",
124
146
  "test/scout/simple_opt/test_doc.rb",
125
147
  "test/scout/simple_opt/test_get.rb",
@@ -127,22 +149,35 @@ Gem::Specification.new do |s|
127
149
  "test/scout/simple_opt/test_setup.rb",
128
150
  "test/scout/test_cmd.rb",
129
151
  "test/scout/test_concurrent_stream.rb",
152
+ "test/scout/test_config.rb",
130
153
  "test/scout/test_indiferent_hash.rb",
131
154
  "test/scout/test_log.rb",
132
155
  "test/scout/test_meta_extension.rb",
133
156
  "test/scout/test_misc.rb",
157
+ "test/scout/test_named_array.rb",
134
158
  "test/scout/test_open.rb",
135
159
  "test/scout/test_path.rb",
136
160
  "test/scout/test_persist.rb",
137
161
  "test/scout/test_resource.rb",
138
162
  "test/scout/test_semaphore.rb",
139
163
  "test/scout/test_tmpfile.rb",
164
+ "test/scout/test_tsv.rb",
140
165
  "test/scout/test_work_queue.rb",
141
166
  "test/scout/test_workflow.rb",
167
+ "test/scout/tsv/persist/test_adapter.rb",
168
+ "test/scout/tsv/persist/test_tokyocabinet.rb",
169
+ "test/scout/tsv/test_dumper.rb",
170
+ "test/scout/tsv/test_index.rb",
171
+ "test/scout/tsv/test_parser.rb",
172
+ "test/scout/tsv/test_persist.rb",
173
+ "test/scout/tsv/test_traverse.rb",
174
+ "test/scout/tsv/test_util.rb",
142
175
  "test/scout/work_queue/test_socket.rb",
143
176
  "test/scout/work_queue/test_worker.rb",
177
+ "test/scout/workflow/step/test_dependencies.rb",
144
178
  "test/scout/workflow/step/test_info.rb",
145
179
  "test/scout/workflow/step/test_load.rb",
180
+ "test/scout/workflow/step/test_provenance.rb",
146
181
  "test/scout/workflow/task/test_inputs.rb",
147
182
  "test/scout/workflow/test_definition.rb",
148
183
  "test/scout/workflow/test_documentation.rb",
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.search_paths.include?(where.to_sym)
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,7 +23,8 @@ 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
25
- task = workflow.tasks[task_name.to_sym] if task_name
26
+ task_name = task_name.to_sym if task_name
27
+ task = workflow.tasks[task_name.to_sym]
26
28
 
27
29
  options[:help] = true if task.nil?
28
30
 
@@ -38,20 +40,24 @@ if options[:help]
38
40
  end
39
41
 
40
42
  job_options = task.get_SOPT(task)
41
- job = task.job(options[:job_name], job_options)
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
- job.run
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
- if ! Open.consume_stream(job.stream, false, STDOUT, false).end_with? "\n"
54
- puts
51
+ job.run unless job.done?
52
+
53
+ if options[:print_filepath]
54
+ path = job.path
55
+ path = path.find if Path === path
56
+ puts path
57
+ else
58
+ if ! ((c = Open.consume_stream(job.get_stream, false, STDOUT, false)) && c.end_with?("\n"))
59
+ puts
60
+ end
55
61
  end
56
62
  end
57
63