eco-helpers 2.6.0 → 2.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +91 -1
  3. data/README.md +5 -0
  4. data/eco-helpers.gemspec +1 -1
  5. data/lib/eco/api/common/class_helpers.rb +1 -1
  6. data/lib/eco/api/common/loaders/base.rb +5 -0
  7. data/lib/eco/api/common/loaders/case_base.rb +0 -2
  8. data/lib/eco/api/common/loaders/config/workflow/mailer.rb +78 -0
  9. data/lib/eco/api/common/loaders/config/workflow.rb +11 -0
  10. data/lib/eco/api/common/loaders/config.rb +29 -0
  11. data/lib/eco/api/common/loaders/error_handler.rb +0 -2
  12. data/lib/eco/api/common/loaders/parser.rb +0 -1
  13. data/lib/eco/api/common/loaders/policy.rb +0 -2
  14. data/lib/eco/api/common/loaders.rb +1 -0
  15. data/lib/eco/api/common/session/mailer.rb +3 -1
  16. data/lib/eco/api/common/version_patches/exception.rb +2 -2
  17. data/lib/eco/api/common/version_patches/ruby3/object.rb +18 -0
  18. data/lib/eco/api/common/version_patches/ruby3.rb +1 -0
  19. data/lib/eco/api/common/version_patches.rb +3 -0
  20. data/lib/eco/api/custom/config.rb +10 -0
  21. data/lib/eco/api/custom/mailer.rb +9 -0
  22. data/lib/eco/api/custom/namespace.rb +2 -0
  23. data/lib/eco/api/custom/workflow.rb +9 -0
  24. data/lib/eco/api/custom.rb +3 -0
  25. data/lib/eco/api/session/batch/base_policy.rb +13 -5
  26. data/lib/eco/api/session/batch/job.rb +10 -7
  27. data/lib/eco/api/session/config/tagtree.rb +15 -1
  28. data/lib/eco/api/session/config/workflow.rb +94 -58
  29. data/lib/eco/api/session/config.rb +2 -2
  30. data/lib/eco/api/usecases/base_io.rb +50 -4
  31. data/lib/eco/api/usecases/cli/dsl.rb +23 -13
  32. data/lib/eco/api/usecases/default/locations/cli/tagtree_extract_cli.rb +5 -0
  33. data/lib/eco/api/usecases/default/locations/tagtree_extract_case.rb +12 -4
  34. data/lib/eco/api/usecases/graphql/helpers/location/base.rb +1 -2
  35. data/lib/eco/api/usecases/ooze_samples/helpers/creatable.rb +62 -0
  36. data/lib/eco/api/usecases/ooze_samples/helpers/rescuable.rb +59 -0
  37. data/lib/eco/api/usecases/ooze_samples/helpers.rb +2 -0
  38. data/lib/eco/api/usecases/ooze_samples/ooze_base_case.rb +2 -1
  39. data/lib/eco/api/usecases/ooze_samples/register_migration_case.rb +2 -26
  40. data/lib/eco/api/usecases/ooze_samples/register_update_case.rb +64 -47
  41. data/lib/eco/api/usecases/ooze_samples/target_oozes_update_case.rb +8 -0
  42. data/lib/eco/api/usecases/use_case.rb +12 -2
  43. data/lib/eco/assets.rb +2 -2
  44. data/lib/eco/cli_default/workflow.rb +102 -120
  45. data/lib/eco/data/locations/node_base/tag_validations.rb +19 -9
  46. data/lib/eco/data/locations/node_base/treeify.rb +193 -18
  47. data/lib/eco/data/locations/node_diff/nodes_diff.rb +11 -9
  48. data/lib/eco/data/locations/node_diff/selectors.rb +1 -1
  49. data/lib/eco/data/locations/node_level.rb +1 -1
  50. data/lib/eco/data/locations/node_plain/parsing.rb +1 -1
  51. data/lib/eco/data/locations/node_plain/serial.rb +1 -1
  52. data/lib/eco/data/locations/node_plain.rb +4 -3
  53. data/lib/eco/language/klass/when_inherited.rb +17 -0
  54. data/lib/eco/language/klass.rb +8 -0
  55. data/lib/eco/language/methods/delegate_missing.rb +28 -0
  56. data/lib/eco/language/methods/dsl_able.rb +25 -0
  57. data/lib/eco/language/methods.rb +9 -0
  58. data/lib/eco/language.rb +2 -0
  59. data/lib/eco/version.rb +1 -1
  60. metadata +18 -3
@@ -12,14 +12,31 @@ module Eco::Data::Locations::NodeBase
12
12
  # @yieldreturn [Hash] custom hash model when treeifying (allows to set more keys/properties).
13
13
  # @nodes [Array<NodeBase>] list of nodes
14
14
  # @return [Array<Hash>] a hierarchical tree of nested Hashes via `nodes` key.
15
- def treeify(nodes, &block)
15
+ def treeify(nodes, skipped: [], unlinked_trees: [], &block)
16
16
  return [] if nodes.empty?
17
17
  block ||= nodes.first.class.serializer
18
- get_children(nil, parents_hash(nodes), &block)
18
+ done_ids = {}
19
+ warns = []
20
+ parents = parents_hash(nodes)
21
+ get_children(nil, parents, done_ids: done_ids, skipped: skipped, warns: warns, &block).tap do |tree|
22
+ check_results(
23
+ tree,
24
+ nodes,
25
+ parents,
26
+ done_ids: done_ids,
27
+ skipped: skipped,
28
+ unlinked_trees: unlinked_trees,
29
+ warns: warns,
30
+ &block
31
+ )
32
+ log(:warn) { warns.join("\n") } unless warns.empty?
33
+ end
19
34
  end
20
35
 
21
36
  private
22
37
 
38
+ # @return [Hash] where `key`s are all the `parentId` of the nodes
39
+ # and `value` and `Array` of those nodes that have that `parentId`
23
40
  def parents_hash(nodes)
24
41
  nodes.each_with_object({}) do |node, parents|
25
42
  (parents[node.parentId] ||= []).push(node)
@@ -32,12 +49,21 @@ module Eco::Data::Locations::NodeBase
32
49
  # 3. The above can translate into some
33
50
  # @yield [node]
34
51
  # @yieldreturn [Hash] custom hash model when treeifying
35
- def get_children(node_id, parents, parent: nil, done_ids: {}, level: 0, &block)
52
+ def get_children(node_id, parents, parent: nil, level: 0, done_ids: {}, skipped: [], warns: [], &block)
36
53
  level_ids = []
37
54
  (parents[node_id] ||= []).each_with_object([]) do |child, results|
38
55
  # Skipping done id. Add proper warnings...
39
56
  # => rely on `done_ids` to identify if an `id` has already been done
40
- next report_skipped_node(child, parent, done_ids, level, level_ids, parents) if done_ids[child.id]
57
+ next report_skipped_node(
58
+ child,
59
+ parent,
60
+ done_ids,
61
+ level,
62
+ level_ids,
63
+ parents,
64
+ skipped: skipped,
65
+ warns: warns
66
+ ) if done_ids[child.id]
41
67
 
42
68
  # Fill in tracking data
43
69
  child.parent = parent
@@ -52,8 +78,26 @@ module Eco::Data::Locations::NodeBase
52
78
  node_hash.merge(yield(child)) if block_given?
53
79
  # we must register the `id` before recursing down
54
80
  done_ids[child.id] = child
81
+
82
+ children = get_children(
83
+ child.id,
84
+ parents,
85
+ parent: child,
86
+ done_ids: done_ids,
87
+ level: level + 1,
88
+ skipped: skipped,
89
+ warns: warns,
90
+ &block
91
+ ).tap do |desc|
92
+ if (nil_count = desc.count(nil)) > 0
93
+ log(:debug) {
94
+ "get_children gave #{nil_count} nil values for nodes of #{child.id}"
95
+ }
96
+ end
97
+ end
98
+
55
99
  results << node_hash.merge({
56
- "nodes" => get_children(child.id, parents, parent: child, done_ids: done_ids, level: level + 1, &block).compact
100
+ "nodes" => children.compact
57
101
  })
58
102
  end
59
103
  end
@@ -70,8 +114,138 @@ module Eco::Data::Locations::NodeBase
70
114
  "#{" " * level}"
71
115
  end
72
116
 
73
- # Gives different warnings, depending the case
74
- def report_skipped_node(node, parent, done_ids, level, level_ids, parents)
117
+ # Method to ensure the results are consistent
118
+ # @param skipped [Array<NodePlain>] those skipped because repeated
119
+ # 1. It will add children of them that were skipped. This won't clash with unlinked nodes
120
+ # because otherwise would be part of `done_ids` anyway.
121
+ # @param unlinked_trees [Array<Hash>] by excluding those done and skipped,
122
+ # it will treeify the unlinked nodes (the exclusion applies to `parants_hash`)
123
+ def check_results(tree, nodes, parents, done_ids: {}, skipped: [], unlinked_trees: [], warns: [], &block)
124
+ update_skipped(skipped, parents, done_ids: done_ids) unless skipped.empty?
125
+
126
+ if done_ids.count != nodes.count
127
+ tracked_nodes = done_ids.values
128
+ untracked_nodes = nodes - tracked_nodes - skipped
129
+ # skipped keys is inherent, as they were excluded because of id clash with done_ids
130
+ unlinked_parent_ids = (parents.keys - done_ids.keys).compact
131
+
132
+ msg = []
133
+
134
+ # The reason of missing nodes in the output tree is unknown!
135
+ if skipped.empty? && unlinked_parent_ids.empty?
136
+ msg << "BUG in this library (open issue with maintainers)."
137
+ msg << "There were no skipped nodes nor missin referred parents, and yet:"
138
+ msg << " • the tree nodes count: #{done_ids.count} ..."
139
+ msg << " • doesn't match the original nodes count: #{nodes.count}"
140
+ raise msg.join("\n")
141
+ end
142
+
143
+ unless unlinked_parent_ids.empty?
144
+ msg << "There are #{unlinked_parent_ids.count} referred parent_id's NOT linked to the root:"
145
+ msg << " • total_nodes: #{nodes.count}"
146
+ msg << " • tracked_nodes: #{tracked_nodes.count}"
147
+ msg << " • untracked_nodes: #{untracked_nodes.count}"
148
+ msg << " • unlinked_parents: #{unlinked_parent_ids.count}"
149
+ msg << " • skipped (repeated) nodes: #{skipped.count}" unless skipped.empty?
150
+
151
+ unlinked_nodes = nodes - skipped
152
+ unlinked_parents = parents.slice(*unlinked_parent_ids) # doesn'thave skipped ones
153
+
154
+ residual_skipped = []
155
+ unlinked_trees.concat \
156
+ get_unlinked_trees(
157
+ unlinked_nodes,
158
+ unlinked_parents,
159
+ done_ids: done_ids,
160
+ skipped: residual_skipped,
161
+ warns: warns,
162
+ &block
163
+ )
164
+
165
+ update_skipped(skipped, parents, with: residual_skipped, done_ids: done_ids) unless residual_skipped.empty?
166
+
167
+ tracked_nodes = done_ids.values
168
+ untracked_nodes = nodes - tracked_nodes - skipped
169
+ unlinked_parent_ids = (parents.keys - done_ids.keys).compact
170
+
171
+ msg << "After treeifying via the unlinked_parents:"
172
+ msg << " • total_nodes: #{nodes.count}"
173
+ msg << " • tracked_nodes: #{tracked_nodes.count}"
174
+ msg << " • untracked_nodes: #{untracked_nodes.count}"
175
+ msg << " • unlinked_parents: #{unlinked_parent_ids.count}"
176
+ msg << " • skipped in this step: #{residual_skipped.count}"
177
+ end
178
+
179
+ msg << " • total skipped (repeated) nodes: #{skipped.count} !!" unless skipped.empty?
180
+ warns << msg.join("\n")
181
+ nil
182
+ end
183
+ end
184
+
185
+ # Treeifies the unlinked nodes by scoping existing parent ids.
186
+ def get_unlinked_trees(nodes, parents, done_ids: {}, skipped: [], warns: [], &block)
187
+ node_ids = nodes.map(&:id)
188
+ parent_ids = parents.keys & node_ids
189
+ missing_parent_ids = parents.keys - parent_ids
190
+ missing_parents = parents.slice(*missing_parent_ids)
191
+ warns << " • missing_parents: #{missing_parents.count}"
192
+ nil_parent_nodes = missing_parents.each_with_object([]) do |(id, nodes), mem|
193
+ nodes.each {|node| node.parent_id = nil}
194
+ mem.concat(nodes)
195
+ end
196
+ rest_parents = parents.slice(*parent_ids).merge({
197
+ nil => nil_parent_nodes
198
+ })
199
+ get_children(nil, rest_parents, done_ids: done_ids, skipped: skipped, warns: warns, &block)
200
+ end
201
+
202
+ # Same as `get_children` but not performing checks and with
203
+ # option to retrieve the source nodes (rather than parsing to `Hash`).
204
+ # @note serves the purpose to identify what linked children got inherently
205
+ # skipped, because their parent was skipped.
206
+ def get_tree_nodes_raw(node_id, parents, src_plain: true, &block)
207
+ (parents[node_id] ||= []).each_with_object([]) do |child, results|
208
+ unless src_plain
209
+ node_hash = {
210
+ "id" => child.id,
211
+ "name" => child.name,
212
+ "parent_id" => node_id
213
+ }
214
+ node_hash.merge(yield(child)) if block_given?
215
+ end
216
+
217
+ descendants = get_tree_nodes_raw(child.id, parents, src_plain: src_plain, &block).tap do |desc|
218
+ if (nil_count = desc.count(nil)) > 0
219
+ puts "get_tree_nodes_raw gave #{nil_count} nil values for nodes of #{child.id}"
220
+ end
221
+ end
222
+
223
+ if src_plain
224
+ results.concat(descendants)
225
+ else
226
+ results << node_hash.merge({
227
+ "nodes" => descendants.compact
228
+ })
229
+ end
230
+ end
231
+ end
232
+
233
+ # It goes through the `with` skipped nodes, and adds them to the `skipped` ones
234
+ # by including their not tracked/done/included children.
235
+ def update_skipped(skipped, parents, with: skipped, done_ids: {})
236
+ raw_skipped_children = with.each_with_object([]) do |node, mem|
237
+ mem << node
238
+ mem.concat get_tree_nodes_raw(node.id, parents)
239
+ end.uniq
240
+ skipped_children = raw_skipped_children - done_ids.values
241
+ skipped.concat(skipped_children).uniq!
242
+ skipped
243
+ end
244
+
245
+ # With given a skipped `node` (repeated `id`), it gives different warnings,
246
+ # provided that the context in which the double-up `id` happened is identified.
247
+ def report_skipped_node(node, parent, done_ids, level, level_ids, parents, skipped: [], warns: [])
248
+ skipped << node
75
249
  lev = level + 1
76
250
  done_node = done_ids[node.id]
77
251
  prev_parent = node.parent
@@ -84,6 +258,9 @@ module Eco::Data::Locations::NodeBase
84
258
  row_str = row_num ? "(Row: #{row_num}) " : ''
85
259
  node_str = "#{row_str}Node '#{node.id}' #{level_msg(lev)} (#{parent_msg(parent)})"
86
260
 
261
+ msg = []
262
+ msg << "#{indent(level)}Skipping #{node_str}."
263
+
87
264
  # Implementation integrity guard
88
265
  # => as we don't register in `done_ids` those that are skipped,
89
266
  # when a `node` has already a tracked `parent` or `level`,
@@ -114,18 +291,15 @@ module Eco::Data::Locations::NodeBase
114
291
  cyclic = multi_parent && done_node == node
115
292
  double_up = node_dup || lev_dup
116
293
 
117
- msg = []
118
- msg << "#{indent(level)}WARNING: Skipping #{node_str}."
119
-
120
294
  if cyclic
121
- str = "#{indent(level)+1}Cyclic definition. By skipping the node, "
295
+ str = "#{indent(level + 1)}Cyclic definition. By skipping the node, "
122
296
  str << "it will remain as #{parent_msg(done_node.parent)} (#{level_msg(prev_level)})."
123
297
  msg << str
124
298
  end
125
299
 
126
300
  if double_up
127
- str = "#{indent(level)+1}The node ID has been tracked as #{level_msg(done_node.tracked_level)}, "
128
- str << "as #{parent_msg(node_dup.parent)} "
301
+ str = "#{indent(level + 1)}Node ID was already tracked as #{level_msg(done_node.tracked_level)}, "
302
+ str << "as #{parent_msg(done_node.parent)} "
129
303
  str << "(same parent)." if lev_dup
130
304
  str << "(different parent)." if multi_parent
131
305
  msg << str
@@ -133,18 +307,19 @@ module Eco::Data::Locations::NodeBase
133
307
 
134
308
  unless cyclic || double_up
135
309
  str = "Integrity issue in Treeify. "
136
- str = "Skipping is only applicable to double_ups or cyclic nodes."
310
+ str << "Skipping is only applicable to double_ups or cyclic nodes."
137
311
  str << "\n • #{node_str}."
138
312
  raise str
139
313
  end
140
314
 
141
- if children = parents[node.id]
142
- str = "#{indent(level)+1}Immediate children of skipped node (will probably be missing): "
143
- str << children.map {|gc| "'#{gc.id}'"}.join(", ")
315
+ unless (children = parents[node.id] || []).empty?
316
+ str = "#{indent(level + 1)}Immediate children of skipped node (will probably be missing): "
317
+ str << children.map {|ch| "'#{ch.id}'"}.join(", ")
144
318
  msg << str
145
319
  end
146
320
 
147
- log(:warn) { msg.join('\n') }
321
+ warns << msg.join("\n")
322
+ nil
148
323
  end
149
324
  end
150
325
  end
@@ -50,30 +50,32 @@ class Eco::Data::Locations::NodeDiff
50
50
  end
51
51
 
52
52
  def diffs_summary
53
- return "There were no differences identified" if diffs.empty?
54
- msg = "Identified #{diffs.count} differences:\n"
53
+ comp = "(#{source2.count} vs #{source1.count} nodes)"
54
+ return "There were no differences identified #{comp}" if diffs.empty?
55
+ msg = []
56
+ msg << "Identified #{diffs.count} differences #{comp}:"
55
57
  msg << when_present(insert, '') do |count|
56
- " • #{count} nodes to insert\n"
58
+ " • #{count} nodes to insert"
57
59
  end
58
60
  msg << when_present(update, '') do |count|
59
- " • #{count} nodes to update\n"
61
+ " • #{count} nodes to update"
60
62
  end
61
63
  # msg << when_present(id, '') do |count|
62
64
  # " • #{count} nodes to change id\n"
63
65
  # end
64
66
  msg << when_present(name, '') do |count|
65
- " • #{count} nodes to change name\n"
67
+ " • #{count} nodes to change name"
66
68
  end
67
69
  msg << when_present(move, '') do |count|
68
- " • #{count} nodes to move\n"
70
+ " • #{count} nodes to move"
69
71
  end
70
72
  msg << when_present(unarchive, '') do |count|
71
- " • #{count} nodes to unarchive\n"
73
+ " • #{count} nodes to unarchive"
72
74
  end
73
75
  msg << when_present(archive, '') do |count|
74
- " • #{count} nodes to archive\n"
76
+ " • #{count} nodes to archive"
75
77
  end
76
- msg
78
+ msg.join("\n")
77
79
  end
78
80
 
79
81
  private
@@ -12,7 +12,7 @@ class Eco::Data::Locations::NodeDiff
12
12
  end
13
13
 
14
14
  define_method methq do
15
- diffs.any(&methq)
15
+ diffs.any?(&methq)
16
16
  end
17
17
  end
18
18
  end
@@ -28,7 +28,7 @@ module Eco::Data::Locations
28
28
  end
29
29
 
30
30
  def tag
31
- clean_id(raw_tag)
31
+ clean_id(raw_tag, ref: "(Row: #{self.row_num}) ")
32
32
  end
33
33
 
34
34
  def raw_tag
@@ -20,7 +20,7 @@ class Eco::Data::Locations::NodePlain
20
20
  end
21
21
 
22
22
  # It builds each NodePlain from the input csv.
23
- # @param `csv` [CSV::Table]
23
+ # @param `csv` [CSV::Table] with specific headers
24
24
  # @return [Array<NodePlain>]
25
25
  def nodes_from_csv(csv)
26
26
  raise ArgumentError, "Expecting CSV::Table. Given: #{csv.class}" unless csv.is_a?(::CSV::Table)
@@ -6,7 +6,7 @@ class Eco::Data::Locations::NodePlain
6
6
  def serializer
7
7
  @serializer ||= proc do |node|
8
8
  raise "Expecting NodePlain. Given: #{node.class}" unless node.is_a?(Eco::Data::Locations::NodePlain)
9
- keys = Eco::Data::Locations::NodePlain::NODE_PLAIN_ATTRS
9
+ keys = Eco::Data::Locations::NodePlain::ALL_ATTRS
10
10
  node.to_h(*keys)
11
11
  end
12
12
  end
@@ -15,7 +15,7 @@ module Eco::Data::Locations
15
15
  PROP_ATTRS = ALL_ATTRS - ADDITIONAL_ATTRS
16
16
 
17
17
  def id
18
- clean_id(super)
18
+ clean_id(super, ref: "(Row: #{self.row_num}) ")
19
19
  end
20
20
  # backwards compatibility
21
21
  alias_method :tag, :id
@@ -24,8 +24,9 @@ module Eco::Data::Locations
24
24
  super || self.id
25
25
  end
26
26
 
27
- def parentId
28
- self.parent_id
27
+ def parent_id
28
+ clean_id(super, notify: false, ref: "(Row: #{self.row_num} - parent_id) ")
29
29
  end
30
+ alias_method :parentId, :parent_id
30
31
  end
31
32
  end
@@ -0,0 +1,17 @@
1
+ module Eco
2
+ module Language
3
+ module Klass
4
+ module WhenInherited
5
+ def inherited(subclass)
6
+ super
7
+ subclass.instance_exec(&when_inherited)
8
+ end
9
+
10
+ def when_inherited(&block)
11
+ return @when_inherited unless block_given?
12
+ @when_inherited = block
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,8 @@
1
+ module Eco
2
+ module Language
3
+ module Klass
4
+ end
5
+ end
6
+ end
7
+
8
+ require_relative 'klass/when_inherited'
@@ -0,0 +1,28 @@
1
+ module Eco
2
+ module Language
3
+ module Methods
4
+ module DelegateMissing
5
+ def delegate_missing_to(meth)
6
+ @delegate_missing_to = meth
7
+ end
8
+
9
+ def method_missing(method_name, *args, **kargs, &block)
10
+ super unless receiver = object_missing_delegated_to
11
+ receiver.send(method_name, *args, **kargs, &block)
12
+ end
13
+
14
+ def respond_to_missing?(method_name, include_private = false)
15
+ super
16
+ end
17
+
18
+ private
19
+
20
+ # retrieve the delegate_missing_to object
21
+ def object_missing_delegated_to
22
+ return nil unless @delegate_missing_to
23
+ self.method(@delegate_missing_to).call
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,25 @@
1
+ module Eco
2
+ module Language
3
+ module Methods
4
+ module DslAble
5
+ # It runs the `block` within this object context
6
+ # @note if the object misses any method, redirects the method to the
7
+ # original evaluate caller.
8
+ def evaluate(*args, **kargs, &block)
9
+ return unless block_given?
10
+ @self_before_evaluate = eval "self", block.binding
11
+ instance_exec(*args, **kargs, &block).tap do
12
+ @self_before_evaluate = nil
13
+ end
14
+ end
15
+
16
+ # When it's the case, redirect to the original `evaluate` caller
17
+ # @see https://www.dan-manges.com/blog/ruby-dsls-instance-eval-with-delegation
18
+ def method_missing(method, *args, **kargs, &block)
19
+ super unless @self_before_evaluate
20
+ @self_before_evaluate.send(method, *args, **kargs, &block)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,9 @@
1
+ module Eco
2
+ module Language
3
+ module Methods
4
+ end
5
+ end
6
+ end
7
+
8
+ require_relative 'methods/dsl_able'
9
+ require_relative 'methods/delegate_missing'
data/lib/eco/language.rb CHANGED
@@ -3,6 +3,8 @@ module Eco
3
3
  end
4
4
  end
5
5
 
6
+ require_relative 'language/klass'
7
+ require_relative 'language/methods'
6
8
  require_relative 'language/models'
7
9
  require_relative 'language/auxiliar_logger'
8
10
  require_relative 'language/basic_logger'
data/lib/eco/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Eco
2
- VERSION = "2.6.0"
2
+ VERSION = "2.6.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eco-helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.0
4
+ version: 2.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oscar Segura
@@ -359,7 +359,7 @@ dependencies:
359
359
  version: '1.13'
360
360
  - - "<"
361
361
  - !ruby/object:Gem::Version
362
- version: '1.16'
362
+ version: '1.17'
363
363
  type: :runtime
364
364
  prerelease: false
365
365
  version_requirements: !ruby/object:Gem::Requirement
@@ -369,7 +369,7 @@ dependencies:
369
369
  version: '1.13'
370
370
  - - "<"
371
371
  - !ruby/object:Gem::Version
372
- version: '1.16'
372
+ version: '1.17'
373
373
  - !ruby/object:Gem::Dependency
374
374
  name: roo
375
375
  requirement: !ruby/object:Gem::Requirement
@@ -496,6 +496,9 @@ files:
496
496
  - lib/eco/api/common/loaders.rb
497
497
  - lib/eco/api/common/loaders/base.rb
498
498
  - lib/eco/api/common/loaders/case_base.rb
499
+ - lib/eco/api/common/loaders/config.rb
500
+ - lib/eco/api/common/loaders/config/workflow.rb
501
+ - lib/eco/api/common/loaders/config/workflow/mailer.rb
499
502
  - lib/eco/api/common/loaders/error_handler.rb
500
503
  - lib/eco/api/common/loaders/parser.rb
501
504
  - lib/eco/api/common/loaders/policy.rb
@@ -542,12 +545,17 @@ files:
542
545
  - lib/eco/api/common/version_patches/hash.rb
543
546
  - lib/eco/api/common/version_patches/hash/deep_merge.rb
544
547
  - lib/eco/api/common/version_patches/object.rb
548
+ - lib/eco/api/common/version_patches/ruby3.rb
549
+ - lib/eco/api/common/version_patches/ruby3/object.rb
545
550
  - lib/eco/api/custom.rb
551
+ - lib/eco/api/custom/config.rb
546
552
  - lib/eco/api/custom/error_handler.rb
553
+ - lib/eco/api/custom/mailer.rb
547
554
  - lib/eco/api/custom/namespace.rb
548
555
  - lib/eco/api/custom/parser.rb
549
556
  - lib/eco/api/custom/policy.rb
550
557
  - lib/eco/api/custom/use_case.rb
558
+ - lib/eco/api/custom/workflow.rb
551
559
  - lib/eco/api/error.rb
552
560
  - lib/eco/api/error/handler.rb
553
561
  - lib/eco/api/error/handlers.rb
@@ -686,10 +694,12 @@ files:
686
694
  - lib/eco/api/usecases/ooze_cases/export_register_case.rb
687
695
  - lib/eco/api/usecases/ooze_samples.rb
688
696
  - lib/eco/api/usecases/ooze_samples/helpers.rb
697
+ - lib/eco/api/usecases/ooze_samples/helpers/creatable.rb
689
698
  - lib/eco/api/usecases/ooze_samples/helpers/exportable_ooze.rb
690
699
  - lib/eco/api/usecases/ooze_samples/helpers/exportable_register.rb
691
700
  - lib/eco/api/usecases/ooze_samples/helpers/filters.rb
692
701
  - lib/eco/api/usecases/ooze_samples/helpers/ooze_handlers.rb
702
+ - lib/eco/api/usecases/ooze_samples/helpers/rescuable.rb
693
703
  - lib/eco/api/usecases/ooze_samples/helpers/shortcuts.rb
694
704
  - lib/eco/api/usecases/ooze_samples/helpers_migration.rb
695
705
  - lib/eco/api/usecases/ooze_samples/helpers_migration/copying.rb
@@ -781,8 +791,13 @@ files:
781
791
  - lib/eco/language/curry.rb
782
792
  - lib/eco/language/hash_transform.rb
783
793
  - lib/eco/language/hash_transform_modifier.rb
794
+ - lib/eco/language/klass.rb
795
+ - lib/eco/language/klass/when_inherited.rb
784
796
  - lib/eco/language/match.rb
785
797
  - lib/eco/language/match_modifier.rb
798
+ - lib/eco/language/methods.rb
799
+ - lib/eco/language/methods/delegate_missing.rb
800
+ - lib/eco/language/methods/dsl_able.rb
786
801
  - lib/eco/language/models.rb
787
802
  - lib/eco/language/models/class_helpers.rb
788
803
  - lib/eco/language/models/collection.rb