flor 0.9.1.1 → 0.9.2
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.
- data/CHANGELOG.md +6 -0
- data/flor.gemspec +5 -1
- data/lib/flor.rb +1 -1
- data/lib/flor/core.rb +6 -3
- data/lib/flor/core/node.rb +6 -5
- data/lib/flor/flor.rb +9 -0
- data/lib/flor/unit/loader.rb +5 -2
- data/lib/flor/unit/scheduler.rb +5 -1
- data/lib/flor/unit/tasker.rb +3 -3
- metadata +12 -12
data/CHANGELOG.md
CHANGED
data/flor.gemspec
CHANGED
@@ -31,8 +31,12 @@ A Ruby workflow engine (ruote next generation)
|
|
31
31
|
#s.add_runtime_dependency 'rufus-lru', '>= 1.1.0'
|
32
32
|
s.add_runtime_dependency 'fugit', '>= 0.9.5'
|
33
33
|
|
34
|
-
s.add_development_dependency 'rspec', '3.4.0'
|
35
34
|
s.add_development_dependency 'sequel', '~> 4'
|
35
|
+
#
|
36
|
+
# flor in transient mode doesn't need a storage,
|
37
|
+
# so Sequel is not a runtime dependency
|
38
|
+
|
39
|
+
s.add_development_dependency 'rspec', '3.4.0'
|
36
40
|
|
37
41
|
s.require_path = 'lib'
|
38
42
|
end
|
data/lib/flor.rb
CHANGED
data/lib/flor/core.rb
CHANGED
@@ -55,10 +55,13 @@ module Flor
|
|
55
55
|
tree
|
56
56
|
|
57
57
|
unless t
|
58
|
-
|
59
|
-
#
|
58
|
+
|
59
|
+
#h = opts.merge(prune: false, rewrite: false, debug: 0)
|
60
|
+
#Raabro.pp(Flor::Lang.parse(tree, h[:fname], h))
|
60
61
|
# TODO re-parse and indicate what went wrong...
|
61
|
-
|
62
|
+
|
63
|
+
fail ArgumentError.new(
|
64
|
+
"flor parse failure: " + tree.inspect[0, 35] + '...')
|
62
65
|
end
|
63
66
|
|
64
67
|
pl = opts[:payload] || opts[:fields] || {}
|
data/lib/flor/core/node.rb
CHANGED
@@ -323,15 +323,16 @@ class Flor::Node
|
|
323
323
|
return [ '_proc', { 'proc' => key }, -1 ]
|
324
324
|
end
|
325
325
|
|
326
|
-
if mod != 'd' && @executor.unit.tasker.has_tasker?(@executor.exid, key)
|
327
|
-
return [ '_task', { 'task' => key }, -1 ]
|
328
|
-
end
|
329
|
-
|
330
326
|
l = @executor.unit.loader
|
331
327
|
vdomain = @node['vdomain']
|
332
328
|
#
|
333
329
|
if l && vdomain != false
|
334
|
-
|
330
|
+
v = l.variables(vdomain || domain).fetch(key) { :no }
|
331
|
+
return v unless v == :no
|
332
|
+
end
|
333
|
+
|
334
|
+
if mod != 'd' && @executor.unit.tasker.has_tasker?(@executor.exid, key)
|
335
|
+
return [ '_task', { 'task' => key }, -1 ]
|
335
336
|
end
|
336
337
|
|
337
338
|
nil
|
data/lib/flor/flor.rb
CHANGED
@@ -379,6 +379,15 @@ module Flor
|
|
379
379
|
s.length < l ? s : s[0, l] + '...'
|
380
380
|
end
|
381
381
|
|
382
|
+
def self.relativize_path(path, from=Dir.getwd)
|
383
|
+
|
384
|
+
path = File.absolute_path(path)
|
385
|
+
|
386
|
+
path = path[from.length + 1..-1] if path[0, from.length] == from
|
387
|
+
|
388
|
+
path
|
389
|
+
end
|
390
|
+
|
382
391
|
#
|
383
392
|
# functions about time
|
384
393
|
|
data/lib/flor/unit/loader.rb
CHANGED
@@ -55,6 +55,8 @@ module Flor
|
|
55
55
|
# # TODO work with Flor.load_procedures
|
56
56
|
#end
|
57
57
|
|
58
|
+
# If found, returns [ source_path, path ]
|
59
|
+
#
|
58
60
|
def library(domain, name=nil)
|
59
61
|
|
60
62
|
domain, name = split_dn(domain, name)
|
@@ -67,7 +69,7 @@ module Flor
|
|
67
69
|
.select { |f| path_name_matches?(domain, name, f) }
|
68
70
|
.first
|
69
71
|
|
70
|
-
path ? File.read(path) : nil
|
72
|
+
path ? [ Flor.relativize_path(path), File.read(path) ] : nil
|
71
73
|
end
|
72
74
|
|
73
75
|
# class FlowEnv
|
@@ -105,11 +107,11 @@ module Flor
|
|
105
107
|
def tasker(domain, name=nil)
|
106
108
|
|
107
109
|
domain, name = split_dn(domain, name)
|
110
|
+
#p [ domain, name ]
|
108
111
|
|
109
112
|
path = Dir[File.join(root, '**/*.json')]
|
110
113
|
.select { |f| f.index('/lib/taskers/') }
|
111
114
|
.sort # just to be sure
|
112
|
-
.sort_by(&:length)
|
113
115
|
.select { |f| path_name_matches?(domain, name, f) }
|
114
116
|
.last
|
115
117
|
|
@@ -159,6 +161,7 @@ module Flor
|
|
159
161
|
|
160
162
|
f = f.sub(/\/(flo|flor|dot)\.json\z/, '.json')
|
161
163
|
|
164
|
+
#p [ domain, name, f ]
|
162
165
|
return false if File.basename(f).split('.').first != name
|
163
166
|
|
164
167
|
path_matches?(domain, File.dirname(f) + '/')
|
data/lib/flor/unit/scheduler.rb
CHANGED
@@ -207,10 +207,14 @@ module Flor
|
|
207
207
|
|
208
208
|
if flow_name
|
209
209
|
|
210
|
-
source = @loader.library(source_or_path)
|
210
|
+
source_path, source = @loader.library(source_or_path)
|
211
|
+
|
212
|
+
opts[:fname] = source_path
|
211
213
|
|
212
214
|
# TODO variables
|
215
|
+
# loaded as needed, via the loader
|
213
216
|
# TODO payload
|
217
|
+
# yes, still has to be done
|
214
218
|
end
|
215
219
|
|
216
220
|
fail ArgumentError.new(
|
data/lib/flor/unit/tasker.rb
CHANGED
@@ -49,10 +49,8 @@ module Flor
|
|
49
49
|
tname = message['tasker']
|
50
50
|
|
51
51
|
tconf =
|
52
|
-
@unit.loader.tasker(domain, 'tasker') ||
|
52
|
+
( ! message['routed'] && @unit.loader.tasker(domain, 'tasker')) ||
|
53
53
|
@unit.loader.tasker(domain, tname)
|
54
|
-
#
|
55
|
-
# FIXME tasker tasker tasker lookup loop?
|
56
54
|
|
57
55
|
fail ArgumentError.new(
|
58
56
|
"tasker #{tname.inspect} not found"
|
@@ -88,6 +86,8 @@ module Flor
|
|
88
86
|
'nid' => message['nid'],
|
89
87
|
'payload' => message['payload'],
|
90
88
|
'tasker' => message['tasker'] })
|
89
|
+
|
90
|
+
nil
|
91
91
|
end
|
92
92
|
|
93
93
|
protected
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-02-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: munemo
|
@@ -60,37 +60,37 @@ dependencies:
|
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 0.9.5
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
|
-
name:
|
63
|
+
name: sequel
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
65
65
|
none: false
|
66
66
|
requirements:
|
67
|
-
- -
|
67
|
+
- - ~>
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
69
|
+
version: '4'
|
70
70
|
type: :development
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
|
-
- -
|
75
|
+
- - ~>
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
77
|
+
version: '4'
|
78
78
|
- !ruby/object:Gem::Dependency
|
79
|
-
name:
|
79
|
+
name: rspec
|
80
80
|
requirement: !ruby/object:Gem::Requirement
|
81
81
|
none: false
|
82
82
|
requirements:
|
83
|
-
- -
|
83
|
+
- - '='
|
84
84
|
- !ruby/object:Gem::Version
|
85
|
-
version:
|
85
|
+
version: 3.4.0
|
86
86
|
type: :development
|
87
87
|
prerelease: false
|
88
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
89
|
none: false
|
90
90
|
requirements:
|
91
|
-
- -
|
91
|
+
- - '='
|
92
92
|
- !ruby/object:Gem::Version
|
93
|
-
version:
|
93
|
+
version: 3.4.0
|
94
94
|
description: A Ruby workflow engine (ruote next generation)
|
95
95
|
email:
|
96
96
|
- jmettraux+flor@gmail.com
|