rbbt-util 5.21.46 → 5.21.47
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/lib/rbbt/resource.rb +1 -1
- data/lib/rbbt/resource/path.rb +1 -1
- data/lib/rbbt/util/colorize.rb +21 -2
- data/lib/rbbt/workflow.rb +26 -22
- data/lib/rbbt/workflow/accessor.rb +12 -3
- data/lib/rbbt/workflow/step.rb +7 -0
- data/lib/rbbt/workflow/step/run.rb +6 -2
- data/share/workflow_config.ru +29 -22
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 819899d0b037631acb37460fb3cb4a6cea8e287f
|
4
|
+
data.tar.gz: 9f820f17c0417b8367b203ac296639c48a49fcf8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3df9c99be5f1e0d9efc7fd35c7efa36e16584486dabca43282cded1febaa9987b9bd9c876728dbe8dada63c959cf5539e41239fad662166e7cb2a1e486f76550
|
7
|
+
data.tar.gz: c75ee8154d92c0f75cf8a0da3df765d26e858f07d0eac923a62a607cebf00a6cc33beb93fc58582e1e3edbc2e7c8b1b9ac4b26d0ac3aa4a11cadc432049be612
|
data/lib/rbbt/resource.rb
CHANGED
@@ -31,7 +31,7 @@ module Resource
|
|
31
31
|
attr_accessor :pkgdir, :subdir, :resources, :rake_dirs, :remote_server, :search_paths
|
32
32
|
|
33
33
|
def root()
|
34
|
-
Path.setup @subdir || "", @pkgdir, self
|
34
|
+
Path.setup @subdir || "", @pkgdir, self, @search_paths
|
35
35
|
end
|
36
36
|
|
37
37
|
def method_missing(name, prev = nil, *args)
|
data/lib/rbbt/resource/path.rb
CHANGED
@@ -85,7 +85,7 @@ module Path
|
|
85
85
|
:default => :user
|
86
86
|
})
|
87
87
|
|
88
|
-
STANDARD_SEARCH = %w(current user local global lib fast cache bulk)
|
88
|
+
STANDARD_SEARCH = %w(current user local workflow global lib fast cache bulk)
|
89
89
|
|
90
90
|
search_path_file = File.join(ENV['HOME'], '.rbbt/etc/search_paths')
|
91
91
|
if File.exist?(search_path_file)
|
data/lib/rbbt/util/colorize.rb
CHANGED
@@ -11,11 +11,15 @@ module Colorize
|
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
-
def self.continuous(array, start = :white, eend = :black)
|
14
|
+
def self.continuous(array, start = :white, eend = :black, percent = false)
|
15
15
|
start_color = Color.new from_name(start)
|
16
16
|
end_color = Color.new from_name(eend)
|
17
17
|
|
18
|
-
|
18
|
+
if percent
|
19
|
+
array = array.collect{|v| n = v.to_f; n = n > 100 ? 100 : n; n < 0.001 ? 0.001 : n}
|
20
|
+
else
|
21
|
+
array = array.collect{|v| n = v.to_f; }
|
22
|
+
end
|
19
23
|
max = array.max
|
20
24
|
min = array.min
|
21
25
|
range = max - min
|
@@ -24,6 +28,21 @@ module Colorize
|
|
24
28
|
start_color.blend end_color, ratio
|
25
29
|
end
|
26
30
|
end
|
31
|
+
|
32
|
+
def self.gradient(array, value, start = :green, eend = :red, percent = false)
|
33
|
+
index = array.index value
|
34
|
+
colors = continuous(array, start, eend, percent)
|
35
|
+
colors[index]
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.rank_gradient(array, value, start = :green, eend = :red, percent = false)
|
39
|
+
index = array.index value
|
40
|
+
sorted = array.sort
|
41
|
+
array = array.collect{|e| sorted.index e}
|
42
|
+
colors = continuous(array, start, eend, percent)
|
43
|
+
colors[index]
|
44
|
+
end
|
45
|
+
|
27
46
|
|
28
47
|
def self.distinct(array)
|
29
48
|
colors = Rbbt.share.color["diverging_colors.hex"].list.collect{|c| Color.new c}
|
data/lib/rbbt/workflow.rb
CHANGED
@@ -294,23 +294,6 @@ module Workflow
|
|
294
294
|
@_m
|
295
295
|
end
|
296
296
|
|
297
|
-
def get_job_step(step_path, task = nil, input_values = nil, dependencies = nil)
|
298
|
-
step_path = step_path.call if Proc === step_path
|
299
|
-
persist = input_values.nil? ? false : true
|
300
|
-
persist = false
|
301
|
-
key = Path === step_path ? step_path.find : step_path
|
302
|
-
step = Step.new step_path, task, input_values, dependencies
|
303
|
-
|
304
|
-
|
305
|
-
step.extend step_module
|
306
|
-
|
307
|
-
step.task ||= task
|
308
|
-
step.inputs ||= input_values
|
309
|
-
step.dependencies = dependencies if dependencies and (step.dependencies.nil? or step.dependencies.length < dependencies.length)
|
310
|
-
|
311
|
-
step
|
312
|
-
end
|
313
|
-
|
314
297
|
def job(taskname, jobname = nil, inputs = {})
|
315
298
|
taskname = taskname.to_sym
|
316
299
|
return remote_tasks[taskname].job(taskname, jobname, inputs) if remote_tasks and remote_tasks.include? taskname
|
@@ -354,9 +337,21 @@ module Workflow
|
|
354
337
|
job
|
355
338
|
end
|
356
339
|
|
357
|
-
def
|
358
|
-
|
359
|
-
|
340
|
+
def get_job_step(step_path, task = nil, input_values = nil, dependencies = nil)
|
341
|
+
step_path = step_path.call if Proc === step_path
|
342
|
+
persist = input_values.nil? ? false : true
|
343
|
+
persist = false
|
344
|
+
key = Path === step_path ? step_path.find : step_path
|
345
|
+
step = Step.new step_path, task, input_values, dependencies
|
346
|
+
|
347
|
+
|
348
|
+
step.extend step_module
|
349
|
+
|
350
|
+
step.task ||= task
|
351
|
+
step.inputs ||= input_values
|
352
|
+
step.dependencies = dependencies if dependencies and (step.dependencies.nil? or step.dependencies.length < dependencies.length)
|
353
|
+
|
354
|
+
step
|
360
355
|
end
|
361
356
|
|
362
357
|
def load_id(id)
|
@@ -366,14 +361,23 @@ module Workflow
|
|
366
361
|
step = Step.new path, tasks[task.to_sym]
|
367
362
|
step.info
|
368
363
|
if step.info.include? :dependencies
|
369
|
-
step.dependencies = step.info[:dependencies].collect do |task, job|
|
364
|
+
step.dependencies = step.info[:dependencies].collect do |task, job, path|
|
370
365
|
next if job.nil?
|
371
|
-
|
366
|
+
load_step(path)
|
372
367
|
end
|
373
368
|
end
|
374
369
|
step
|
375
370
|
end
|
376
371
|
|
372
|
+
def load_step(path)
|
373
|
+
task = task_for path
|
374
|
+
if task
|
375
|
+
get_job_step path, tasks[task.to_sym]
|
376
|
+
else
|
377
|
+
get_job_step path
|
378
|
+
end
|
379
|
+
end
|
380
|
+
|
377
381
|
def load_name(task, name)
|
378
382
|
return remote_tasks[task].load_step(path) if remote_tasks and remote_tasks.include? task
|
379
383
|
task = tasks[task.to_sym] if String === task or Symbol === task
|
@@ -350,7 +350,12 @@ class Step
|
|
350
350
|
end
|
351
351
|
|
352
352
|
def dirty?
|
353
|
-
rec_dependencies.collect{|dependency| dependency.path unless dependency.error? and not dependency.recoverable_error? }.compact.uniq.reject{|path| not (Path === path) or path.exists?}
|
353
|
+
dirty_files = rec_dependencies.collect{|dependency| dependency.path unless dependency.error? and not dependency.recoverable_error? }.compact.uniq.reject{|path| not (Path === path) or path.exists?}
|
354
|
+
if dirty_files.any?
|
355
|
+
true
|
356
|
+
else
|
357
|
+
false
|
358
|
+
end
|
354
359
|
end
|
355
360
|
|
356
361
|
def done?
|
@@ -358,7 +363,7 @@ class Step
|
|
358
363
|
end
|
359
364
|
|
360
365
|
def streaming?
|
361
|
-
IO === @result or @saved_stream or status == :streaming
|
366
|
+
(IO === @result) or (not @saved_stream.nil?) or status == :streaming
|
362
367
|
end
|
363
368
|
|
364
369
|
|
@@ -806,7 +811,11 @@ module Workflow
|
|
806
811
|
workdir_find = File.expand_path(workdir_find)
|
807
812
|
path = File.expand_path(path)
|
808
813
|
dir = File.dirname(path)
|
809
|
-
|
814
|
+
begin
|
815
|
+
Misc.path_relative_to(workdir_find, dir).sub(/([^\/]+)\/.*/,'\1')
|
816
|
+
rescue
|
817
|
+
nil
|
818
|
+
end
|
810
819
|
end
|
811
820
|
|
812
821
|
def task_exports
|
data/lib/rbbt/workflow/step.rb
CHANGED
@@ -267,7 +267,7 @@ class Step
|
|
267
267
|
end
|
268
268
|
end
|
269
269
|
|
270
|
-
|
270
|
+
update
|
271
271
|
|
272
272
|
if dofork
|
273
273
|
fork(true) unless started?
|
@@ -499,7 +499,11 @@ class Step
|
|
499
499
|
dependencies.each{|dep| dep.join }
|
500
500
|
end
|
501
501
|
|
502
|
-
|
502
|
+
until path.exists? or error? or aborted?
|
503
|
+
iii [:sleep, status, streaming?]
|
504
|
+
sleep 1
|
505
|
+
join_stream if streaming?
|
506
|
+
end
|
503
507
|
|
504
508
|
self
|
505
509
|
ensure
|
data/share/workflow_config.ru
CHANGED
@@ -10,7 +10,6 @@ def load_file(file)
|
|
10
10
|
load file
|
11
11
|
end
|
12
12
|
end
|
13
|
-
|
14
13
|
def app_eval(app, file)
|
15
14
|
if Array === file
|
16
15
|
file.each{|f| app_eval app, f }
|
@@ -22,6 +21,7 @@ def app_eval(app, file)
|
|
22
21
|
end
|
23
22
|
end
|
24
23
|
|
24
|
+
|
25
25
|
#{{{ INIT
|
26
26
|
ENV["RBBT_LOG"] = Log.severity.to_s
|
27
27
|
require Rbbt.etc['app.d/init.rb'].find
|
@@ -30,79 +30,86 @@ require Rbbt.etc['app.d/init.rb'].find
|
|
30
30
|
workflow = Rbbt.etc['target_workflow'].read
|
31
31
|
wf = Workflow.require_workflow workflow, true
|
32
32
|
|
33
|
+
|
33
34
|
$title = wf.to_s
|
34
35
|
$app_name = app_name = wf.to_s + "REST"
|
35
36
|
$app = app = eval "class #{app_name} < Sinatra::Base; self end"
|
36
37
|
|
38
|
+
Rbbt.search_paths = Path::SEARCH_PATHS.merge(:workflow => File.join(wf.libdir, '{TOPLEVEL}','{SUBPATH}'))
|
39
|
+
|
40
|
+
etc_dir = Rbbt.etc
|
41
|
+
#etc_dir.search_paths = Path::SEARCH_PATHS.merge(:workflow => File.join(wf.libdir, '{TOPLEVEL}','{SUBPATH}'))
|
42
|
+
|
43
|
+
|
37
44
|
#{{{ PRE
|
38
|
-
load_file
|
45
|
+
load_file etc_dir['app.d/pre.rb'].find
|
39
46
|
|
40
47
|
app.get '/' do
|
41
48
|
redirect to(File.join('/', wf.to_s))
|
42
49
|
end
|
43
50
|
|
44
51
|
#{{{ BASE
|
45
|
-
app_eval app,
|
52
|
+
app_eval app, etc_dir['app.d/base.rb'].find
|
46
53
|
|
47
54
|
app.add_workflow wf, :priority
|
48
55
|
|
49
56
|
#{{{ WORKFLOWS
|
50
|
-
app_eval app,
|
57
|
+
app_eval app, etc_dir['app.d/workflows.rb'].find_all
|
51
58
|
|
52
59
|
#{{{ RESOURCES
|
53
|
-
load_file
|
60
|
+
load_file etc_dir['app.d/resources.rb'].find
|
54
61
|
|
55
62
|
#{{{ KNOWLEDGEBASE
|
56
|
-
load_file
|
63
|
+
load_file etc_dir['app.d/knowledge_bases.rb'].find
|
57
64
|
|
58
65
|
#{{{ REQUIRES
|
59
|
-
load_file
|
66
|
+
load_file etc_dir['app.d/requires.rb'].find
|
60
67
|
|
61
68
|
#{{{ ENTITIES
|
62
|
-
load_file
|
69
|
+
load_file etc_dir['app.d/entities.rb'].find
|
63
70
|
|
64
71
|
#{{{ ROUTES
|
65
|
-
app_eval app,
|
72
|
+
app_eval app, etc_dir['app.d/routes.rb'].find_all
|
66
73
|
|
67
74
|
#{{{ FINDER
|
68
|
-
app_eval app,
|
75
|
+
app_eval app, etc_dir['app.d/finder.rb'].find
|
69
76
|
|
70
77
|
#{{{ POST
|
71
|
-
load_file
|
78
|
+
load_file etc_dir['app.d/post.rb'].find_all
|
72
79
|
|
73
80
|
#{{{ PRELOAD
|
74
|
-
load_file
|
81
|
+
load_file etc_dir['app.d/preload.rb'].find_all
|
75
82
|
|
76
|
-
if
|
77
|
-
exports =
|
83
|
+
if etc_dir['target_workflow_exports'].exists?
|
84
|
+
exports = etc_dir['target_workflow_exports'].read.split("\n")
|
78
85
|
exports.each do |task|
|
79
86
|
wf.export task.to_sym
|
80
87
|
end
|
81
88
|
end
|
82
89
|
|
83
|
-
if
|
84
|
-
exports =
|
90
|
+
if etc_dir['target_workflow_stream_exports'].exists?
|
91
|
+
exports = etc_dir['target_workflow_stream_exports'].read.split("\n")
|
85
92
|
exports.each do |task|
|
86
93
|
wf.export_stream task.to_sym
|
87
94
|
end
|
88
95
|
end
|
89
96
|
|
90
|
-
if
|
91
|
-
exports =
|
97
|
+
if etc_dir['target_workflow_async_exports'].exists?
|
98
|
+
exports = etc_dir['target_workflow_async_exports'].read.split("\n")
|
92
99
|
exports.each do |task|
|
93
100
|
wf.export_asynchronous task.to_sym
|
94
101
|
end
|
95
102
|
end
|
96
103
|
|
97
|
-
if
|
98
|
-
exports =
|
104
|
+
if etc_dir['target_workflow_sync_exports'].exists?
|
105
|
+
exports = etc_dir['target_workflow_sync_exports'].read.split("\n")
|
99
106
|
exports.each do |task|
|
100
107
|
wf.export_synchronous task.to_sym
|
101
108
|
end
|
102
109
|
end
|
103
110
|
|
104
|
-
if
|
105
|
-
exports =
|
111
|
+
if etc_dir['target_workflow_exec_exports'].exists?
|
112
|
+
exports = etc_dir['target_workflow_exec_exports'].read.split("\n")
|
106
113
|
exports.each do |task|
|
107
114
|
wf.export_exec task.to_sym
|
108
115
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbbt-util
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.21.
|
4
|
+
version: 5.21.47
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miguel Vazquez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|