scout-gear 2.0.0 → 5.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.
- checksums.yaml +4 -4
- data/.vimproject +65 -2
- data/Rakefile +2 -0
- data/VERSION +1 -1
- data/bin/scout +233 -24
- data/lib/scout/cmd.rb +344 -0
- data/lib/scout/concurrent_stream.rb +259 -0
- data/lib/scout/exceptions.rb +15 -8
- data/lib/scout/indiferent_hash/options.rb +8 -26
- data/lib/scout/log/color.rb +2 -2
- data/lib/scout/log/fingerprint.rb +11 -1
- data/lib/scout/log/progress/report.rb +0 -1
- data/lib/scout/log/progress/util.rb +1 -1
- data/lib/scout/log/progress.rb +4 -4
- data/lib/scout/log.rb +10 -2
- data/lib/scout/meta_extension.rb +19 -3
- data/lib/scout/misc/digest.rb +56 -0
- data/lib/scout/misc/filesystem.rb +26 -0
- data/lib/scout/misc/format.rb +17 -6
- data/lib/scout/misc/insist.rb +56 -0
- data/lib/scout/misc/monitor.rb +23 -0
- data/lib/scout/misc.rb +5 -11
- data/lib/scout/open/lock.rb +61 -0
- data/lib/scout/open/remote.rb +120 -0
- data/lib/scout/open/stream.rb +373 -0
- data/lib/scout/open/util.rb +225 -0
- data/lib/scout/open.rb +169 -0
- data/lib/scout/path/find.rb +68 -21
- data/lib/scout/path/tmpfile.rb +8 -0
- data/lib/scout/path/util.rb +14 -1
- data/lib/scout/path.rb +6 -30
- data/lib/scout/persist/open.rb +17 -0
- data/lib/scout/persist/path.rb +15 -0
- data/lib/scout/persist/serialize.rb +151 -0
- data/lib/scout/persist.rb +54 -0
- data/lib/scout/resource/path.rb +20 -0
- data/lib/scout/resource/produce/rake.rb +69 -0
- data/lib/scout/resource/produce.rb +246 -0
- data/lib/scout/resource/scout.rb +3 -0
- data/lib/scout/resource/util.rb +48 -0
- data/lib/scout/resource.rb +39 -0
- data/lib/scout/simple_opt/accessor.rb +1 -1
- data/lib/scout/simple_opt/doc.rb +29 -23
- data/lib/scout/simple_opt/parse.rb +4 -3
- data/lib/scout/tmpfile.rb +39 -1
- data/lib/scout/workflow/definition.rb +78 -0
- data/lib/scout/workflow/documentation.rb +83 -0
- data/lib/scout/workflow/step/info.rb +77 -0
- data/lib/scout/workflow/step/load.rb +18 -0
- data/lib/scout/workflow/step.rb +132 -0
- data/lib/scout/workflow/task/inputs.rb +114 -0
- data/lib/scout/workflow/task.rb +155 -0
- data/lib/scout/workflow/usage.rb +314 -0
- data/lib/scout/workflow/util.rb +11 -0
- data/lib/scout/workflow.rb +40 -0
- data/lib/scout-gear.rb +4 -0
- data/lib/scout.rb +1 -0
- data/lib/workflow-scout.rb +2 -0
- data/scout-gear.gemspec +77 -5
- data/scout_commands/alias +48 -0
- data/scout_commands/find +83 -0
- data/scout_commands/glob +0 -0
- data/scout_commands/rbbt +23 -0
- data/scout_commands/workflow/info +29 -0
- data/scout_commands/workflow/list +27 -0
- data/scout_commands/workflow/task +58 -0
- data/scout_commands/workflow/task_old +706 -0
- data/test/scout/indiferent_hash/test_options.rb +11 -1
- data/test/scout/misc/test_digest.rb +30 -0
- data/test/scout/misc/test_filesystem.rb +30 -0
- data/test/scout/misc/test_insist.rb +13 -0
- data/test/scout/open/test_lock.rb +52 -0
- data/test/scout/open/test_remote.rb +25 -0
- data/test/scout/open/test_stream.rb +515 -0
- data/test/scout/open/test_util.rb +73 -0
- data/test/scout/path/test_find.rb +28 -0
- data/test/scout/persist/test_open.rb +37 -0
- data/test/scout/persist/test_path.rb +37 -0
- data/test/scout/persist/test_serialize.rb +114 -0
- data/test/scout/resource/test_path.rb +40 -0
- data/test/scout/resource/test_produce.rb +62 -0
- data/test/scout/resource/test_util.rb +27 -0
- data/test/scout/simple_opt/test_doc.rb +16 -0
- data/test/scout/test_cmd.rb +85 -0
- data/test/scout/test_concurrent_stream.rb +29 -0
- data/test/scout/test_meta_extension.rb +9 -0
- data/test/scout/test_misc.rb +0 -7
- data/test/scout/test_open.rb +146 -0
- data/test/scout/test_path.rb +3 -1
- data/test/scout/test_persist.rb +83 -0
- data/test/scout/test_resource.rb +26 -0
- data/test/scout/test_workflow.rb +87 -0
- data/test/scout/workflow/step/test_info.rb +30 -0
- data/test/scout/workflow/step/test_load.rb +65 -0
- data/test/scout/workflow/task/test_inputs.rb +182 -0
- data/test/scout/workflow/test_definition.rb +0 -0
- data/test/scout/workflow/test_documentation.rb +30 -0
- data/test/scout/workflow/test_step.rb +36 -0
- data/test/scout/workflow/test_task.rb +179 -0
- data/test/scout/workflow/test_usage.rb +35 -0
- data/test/scout/workflow/test_util.rb +17 -0
- data/test/test_helper.rb +17 -0
- data/test/test_scout-gear.rb +0 -0
- metadata +75 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c39189bc9fe8816a3c0494c78966486f28383e8e15bf38ab33fe4dcde6739f3c
|
4
|
+
data.tar.gz: 5f2753e6810a68be44589f9392de1eff2f8592dd2704b05a0ccdf866f07f6a1b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 820d17306f468e7b206672b717489f78eb6fbfa37c843441202ce124c54cb7b84b89062a951c14a2db65ada47faf073dbc6a1b863294388ce66a8c1f7dd36e9f
|
7
|
+
data.tar.gz: c0fe23608355128c0e709db78c5598c5ece26e885eaa8788872878b7d55e29fc50bcb8215d3b4080f9e8d89456630e2739b087ee7d8b4b57498b299df3dc89d2
|
data/.vimproject
CHANGED
@@ -1,10 +1,24 @@
|
|
1
1
|
scout-gear=/$PWD filter="*.rb *.yaml" {
|
2
2
|
Rakefile
|
3
|
-
bin=bin {
|
3
|
+
bin=bin filter="*"{
|
4
4
|
scout
|
5
5
|
}
|
6
|
+
scout_commands=scout_commands filter="*"{
|
7
|
+
rbbt
|
8
|
+
alias
|
9
|
+
find
|
10
|
+
glob
|
11
|
+
workflow=workflow{
|
12
|
+
task_old
|
13
|
+
task
|
14
|
+
list
|
15
|
+
info
|
16
|
+
}
|
17
|
+
}
|
6
18
|
lib=lib {
|
7
19
|
scout-gear.rb
|
20
|
+
workflow-scout.rb
|
21
|
+
scout.rb
|
8
22
|
scout=scout{
|
9
23
|
meta_extension.rb
|
10
24
|
exceptions.rb
|
@@ -12,8 +26,11 @@ scout-gear=/$PWD filter="*.rb *.yaml" {
|
|
12
26
|
misc.rb
|
13
27
|
misc=misc{
|
14
28
|
format.rb
|
29
|
+
insist.rb
|
30
|
+
digest.rb
|
31
|
+
filesystem.rb
|
32
|
+
monitor.rb
|
15
33
|
}
|
16
|
-
tmpfile.rb
|
17
34
|
indiferent_hash.rb
|
18
35
|
indiferent_hash=indiferent_hash{
|
19
36
|
case_insensitive.rb
|
@@ -30,6 +47,7 @@ scout-gear=/$PWD filter="*.rb *.yaml" {
|
|
30
47
|
util.rb
|
31
48
|
}
|
32
49
|
}
|
50
|
+
tmpfile.rb
|
33
51
|
simple_opt.rb
|
34
52
|
simple_opt=simple_opt{
|
35
53
|
accessor.rb
|
@@ -42,6 +60,48 @@ scout-gear=/$PWD filter="*.rb *.yaml" {
|
|
42
60
|
path=path{
|
43
61
|
find.rb
|
44
62
|
util.rb
|
63
|
+
tmpfile.rb
|
64
|
+
}
|
65
|
+
concurrent_stream.rb
|
66
|
+
cmd.rb
|
67
|
+
open.rb
|
68
|
+
open=open{
|
69
|
+
lock.rb
|
70
|
+
stream.rb
|
71
|
+
remote.rb
|
72
|
+
util.rb
|
73
|
+
}
|
74
|
+
resource.rb
|
75
|
+
resource=resource{
|
76
|
+
produce.rb
|
77
|
+
produce=produce{
|
78
|
+
rake.rb
|
79
|
+
}
|
80
|
+
scout.rb
|
81
|
+
util.rb
|
82
|
+
path.rb
|
83
|
+
}
|
84
|
+
persist.rb
|
85
|
+
persist=persist{
|
86
|
+
serialize.rb
|
87
|
+
open.rb
|
88
|
+
path.rb
|
89
|
+
}
|
90
|
+
workflow.rb
|
91
|
+
workflow=workflow{
|
92
|
+
definition.rb
|
93
|
+
step.rb
|
94
|
+
step=step{
|
95
|
+
info.rb
|
96
|
+
load.rb
|
97
|
+
}
|
98
|
+
task.rb
|
99
|
+
task=task{
|
100
|
+
inputs.rb
|
101
|
+
}
|
102
|
+
documentation.rb
|
103
|
+
usage.rb
|
104
|
+
util.rb
|
45
105
|
}
|
46
106
|
}
|
47
107
|
}
|
@@ -85,6 +145,8 @@ scout-gear=/$PWD filter="*.rb *.yaml" {
|
|
85
145
|
util=util{
|
86
146
|
misc.rb
|
87
147
|
misc=misc{
|
148
|
+
refactor.rb
|
149
|
+
|
88
150
|
serialize.rb
|
89
151
|
exceptions.rb
|
90
152
|
concurrent_stream.rb
|
@@ -292,6 +354,7 @@ scout-gear=/$PWD filter="*.rb *.yaml" {
|
|
292
354
|
|
293
355
|
persist.rb
|
294
356
|
persist=persist{
|
357
|
+
refactor.rb
|
295
358
|
tsv.rb
|
296
359
|
tsv=tsv{
|
297
360
|
adapter.rb
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.0
|
1
|
+
5.2.0
|
data/bin/scout
CHANGED
@@ -1,28 +1,237 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
3
|
+
$LOAD_PATH.unshift File.join(__dir__, '../lib')
|
4
|
+
|
5
|
+
require 'scout-gear'
|
6
|
+
|
7
|
+
class CmdStop < Exception
|
8
|
+
attr_accessor :exit_status
|
9
|
+
def initialize(exit_status = 0)
|
10
|
+
@exit_status = exit_status
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
# Add paths to scout repos under --dev to LOAD_PATHS
|
15
|
+
dev_dir = nil
|
16
|
+
if _i = ARGV.index("--dev")
|
17
|
+
dev_dir = ARGV[_i+1]
|
18
|
+
ARGV.delete "--dev"
|
19
|
+
ARGV.delete dev_dir
|
20
|
+
end
|
21
|
+
|
22
|
+
if dev_dir.nil?
|
23
|
+
_s = nil
|
24
|
+
ARGV.each_with_index do |s,i|
|
25
|
+
if s.match(/^--dev(?:=(.*))?/)
|
26
|
+
dev_dir = $1
|
27
|
+
_s = s
|
28
|
+
next
|
29
|
+
end
|
30
|
+
end
|
31
|
+
ARGV.delete _s if _s
|
32
|
+
end
|
33
|
+
|
34
|
+
if dev_dir
|
35
|
+
['scout-*/lib'].each do |pattern|
|
36
|
+
Dir.glob(File.join(File.expand_path(dev_dir), pattern)).each do |f|
|
37
|
+
$LOAD_PATH.unshift f
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
Log.nocolor = true if ARGV.include? "--nocolor"
|
43
|
+
|
44
|
+
require 'scout/simple_opt'
|
45
|
+
|
46
|
+
options = SOPT.setup <<EOF
|
47
|
+
Ruby bioinformatics toolkit
|
48
|
+
|
49
|
+
$ #{$0} <command> <subcommand> ... -a --arg1 --arg2='value' --arg3 'another-value'
|
50
|
+
|
51
|
+
|
52
|
+
--log* #{Log.color :yellow, "Log level from 0 (debug) 6 (errors)"}
|
53
|
+
--dev* #{Log.color :yellow, "Find development libraries in the directory specified"}
|
54
|
+
--nocolor #{Log.color :yellow, "Disable colored output"}
|
55
|
+
--nobar #{Log.color :yellow, "Disable progress report"}
|
56
|
+
--locate_file #{Log.color :yellow, "Report the location of the script instead of executing it"}
|
57
|
+
EOF
|
58
|
+
|
59
|
+
Log.nocolor = true if options[:nocolor]
|
60
|
+
|
61
|
+
locate = options.delete :locate_file
|
62
|
+
|
63
|
+
if options[:log_file]
|
64
|
+
Log.logfile(options[:log_file])
|
65
|
+
end
|
66
|
+
|
67
|
+
if options[:log]
|
68
|
+
Log.severity = options[:log].to_i
|
26
69
|
else
|
27
|
-
|
70
|
+
global_severity = Log.get_level(Scout.etc.log_severity.read.strip) if Scout.etc.log_severity.exists?
|
71
|
+
if ENV["SCOUT_LOG"]
|
72
|
+
Log.severity = ENV["SCOUT_LOG"].to_i
|
73
|
+
else
|
74
|
+
global_severity = Log.get_level(Scout.etc.log_severity.read.strip) if Scout.etc.log_severity.exists?
|
75
|
+
Log.severity = global_severity.to_i if global_severity
|
76
|
+
end
|
28
77
|
end
|
78
|
+
|
79
|
+
$scout_command_dir = Scout.bin.scout
|
80
|
+
$scout_command_dir.path_maps[:scout_commands] = File.join(File.dirname(__dir__), "{PATH/bin\\/scout/scout_commands}")
|
81
|
+
|
82
|
+
SOPT.description =<<EOF
|
83
|
+
This command controls many aspects of the Scout framework, from configuration tasks to running applications.
|
84
|
+
|
85
|
+
Commands are implemented in separate files under the Scout path '#{$scout_command_dir}'.
|
86
|
+
Known locations are: #{([$scout_command_dir] + $scout_command_dir.find_all) * ", " }.
|
87
|
+
You can place your own commads at #{$scout_command_dir.find(:user)}.
|
88
|
+
EOF
|
89
|
+
|
90
|
+
if options[:profile]
|
91
|
+
require 'ruby-prof'
|
92
|
+
RubyProf.start
|
93
|
+
end
|
94
|
+
|
95
|
+
|
96
|
+
def prev_dir(prev)
|
97
|
+
scout_command_dir = $scout_command_dir
|
98
|
+
|
99
|
+
prev.each do |previous_command|
|
100
|
+
scout_command_dir = scout_command_dir[previous_command]
|
101
|
+
end
|
102
|
+
|
103
|
+
scout_command_dir
|
104
|
+
end
|
105
|
+
|
106
|
+
def commands(prev)
|
107
|
+
scout_command_dir = prev_dir(prev)
|
108
|
+
|
109
|
+
command_file_dirs = scout_command_dir.find_all
|
110
|
+
command_files = command_file_dirs.collect{|d| d.glob('*') }.flatten
|
111
|
+
command_files.collect{|p| File.basename(p) }.uniq.reject{|p| p =~ /\.desc$/}.sort
|
112
|
+
end
|
113
|
+
|
114
|
+
def scout_usage(prev = nil)
|
115
|
+
puts
|
116
|
+
puts SOPT.doc
|
117
|
+
|
118
|
+
if prev
|
119
|
+
puts
|
120
|
+
puts Log.color :magenta, "## COMMANDS"
|
121
|
+
puts
|
122
|
+
puts Log.color :magenta, "Command:"
|
123
|
+
puts
|
124
|
+
puts " #{File.basename($0)} #{prev * " "}"
|
125
|
+
puts
|
126
|
+
puts Log.color :magenta, "Subcommands:"
|
127
|
+
puts
|
128
|
+
prev_dir = prev_dir(prev)
|
129
|
+
commands(prev).each do |command|
|
130
|
+
directory = File.directory? prev_dir[command].find
|
131
|
+
if directory
|
132
|
+
puts " " << Log.color(:blue, command)
|
133
|
+
else
|
134
|
+
puts " " << command
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
138
|
+
puts
|
139
|
+
true
|
140
|
+
end
|
141
|
+
|
142
|
+
alias usage scout_usage
|
143
|
+
|
144
|
+
def print_error(error, backtrace = nil)
|
145
|
+
puts Log.color :magenta, "## ERROR"
|
146
|
+
puts
|
147
|
+
if backtrace
|
148
|
+
puts Log.color :red, "Backtrace: "
|
149
|
+
puts
|
150
|
+
puts Log.color_stack(backtrace.reverse) * "\n"
|
151
|
+
puts
|
152
|
+
end
|
153
|
+
puts Log.color :red, error
|
154
|
+
puts
|
155
|
+
end
|
156
|
+
|
157
|
+
def aliases
|
158
|
+
@aliases ||= Scout.etc.cmd_alias.exists? ? Scout.etc.cmd_alias.yaml : {}
|
159
|
+
end
|
160
|
+
|
161
|
+
def tokenize_cmd_params(str)
|
162
|
+
return str if Array === str
|
163
|
+
str.scan(/
|
164
|
+
(?:["']([^"']*?)["']) |
|
165
|
+
([^"'\s]+)
|
166
|
+
/x).flatten.compact
|
167
|
+
end
|
168
|
+
|
169
|
+
def cmd_alias
|
170
|
+
while ARGV[0] && aliases.include?(ARGV[0])
|
171
|
+
ARGV.replace tokenize_cmd_params(aliases[ARGV[0]]) + ARGV[1..-1]
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
dir = $scout_command_dir
|
176
|
+
$previous_commands = []
|
177
|
+
|
178
|
+
cmd_alias
|
179
|
+
|
180
|
+
exit_status = 0
|
181
|
+
begin
|
182
|
+
while ARGV.any?
|
183
|
+
$command = ARGV.shift
|
184
|
+
case
|
185
|
+
when File.directory?(dir[$command].find)
|
186
|
+
$previous_commands << $command
|
187
|
+
dir = dir[$command]
|
188
|
+
when dir[$command].exists?
|
189
|
+
if locate
|
190
|
+
puts dir[$command].find
|
191
|
+
exit_status = 0
|
192
|
+
exit exit_status
|
193
|
+
else
|
194
|
+
load dir[$command].find
|
195
|
+
exit_status = 0
|
196
|
+
exit exit_status
|
197
|
+
end
|
198
|
+
when File.exist?($command)
|
199
|
+
load $command
|
200
|
+
exit_status = 0
|
201
|
+
exit exit_status
|
202
|
+
else
|
203
|
+
error = "Command '#{$command }' not understood"
|
204
|
+
scout_usage($previous_commands)
|
205
|
+
print_error(error)
|
206
|
+
exit_status = -1
|
207
|
+
exit exit_status
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
scout_usage($previous_commands)
|
212
|
+
exit_status = 0
|
213
|
+
exit exit_status
|
214
|
+
|
215
|
+
rescue ParameterException
|
216
|
+
puts
|
217
|
+
scout_usage
|
218
|
+
print_error($!.message, $!.backtrace)
|
219
|
+
puts
|
220
|
+
exit_status = -1
|
221
|
+
exit exit_status
|
222
|
+
rescue SystemExit,CmdStop
|
223
|
+
exit_status = $!.status
|
224
|
+
exit exit_status
|
225
|
+
rescue Exception
|
226
|
+
Log.exception $!
|
227
|
+
exit_status = -1
|
228
|
+
exit exit_status
|
229
|
+
ensure
|
230
|
+
if options[:profile]
|
231
|
+
result = RubyProf.stop
|
232
|
+
printer = RubyProf::FlatPrinter.new(result)
|
233
|
+
printer.print(STDOUT, :min_percent => 10)
|
234
|
+
end
|
235
|
+
end
|
236
|
+
|
237
|
+
exit exit_status
|