scout-gear 6.0.0 → 7.2.0

Sign up to get free protection for your applications and to get access to all the features.
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