eco-helpers 3.0.26 → 3.0.27

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.
Files changed (116) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +38 -5
  3. data/eco-helpers.gemspec +1 -1
  4. data/lib/eco/api/common/loaders/base.rb +1 -1
  5. data/lib/eco/api/common/loaders/case_base.rb +1 -1
  6. data/lib/eco/api/common/loaders/error_handler.rb +1 -1
  7. data/lib/eco/api/common/loaders/parser.rb +2 -2
  8. data/lib/eco/api/common/loaders/policy.rb +1 -1
  9. data/lib/eco/api/common/loaders/use_case.rb +1 -1
  10. data/lib/eco/api/common/people/default_parsers/archived_parser.rb +19 -0
  11. data/lib/eco/api/common/people/default_parsers/boolean_parser.rb +4 -4
  12. data/lib/eco/api/common/people/default_parsers/date_parser.rb +3 -3
  13. data/lib/eco/api/common/people/default_parsers/freemium_parser.rb +6 -6
  14. data/lib/eco/api/common/people/default_parsers/login_providers_parser.rb +3 -3
  15. data/lib/eco/api/common/people/default_parsers/multi_parser.rb +4 -4
  16. data/lib/eco/api/common/people/default_parsers/policy_groups_parser.rb +9 -6
  17. data/lib/eco/api/common/people/default_parsers/send_invites_parser.rb +6 -5
  18. data/lib/eco/api/common/people/default_parsers/xls_parser.rb +2 -2
  19. data/lib/eco/api/common/people/default_parsers.rb +1 -0
  20. data/lib/eco/api/common/people/entries.rb +16 -15
  21. data/lib/eco/api/common/people/person_entry.rb +53 -37
  22. data/lib/eco/api/common/people/person_parser.rb +8 -6
  23. data/lib/eco/api/common/session/logger/channels.rb +1 -1
  24. data/lib/eco/api/common/session/logger.rb +2 -2
  25. data/lib/eco/api/common/session/mailer/aws_provider.rb +3 -2
  26. data/lib/eco/api/common/session/mailer/provider_base.rb +2 -1
  27. data/lib/eco/api/common/session/mailer/sendgrid_provider.rb +9 -9
  28. data/lib/eco/api/common/session/mailer.rb +5 -3
  29. data/lib/eco/api/common/session/sftp.rb +2 -2
  30. data/lib/eco/api/common/version_patches/object.rb +2 -1
  31. data/lib/eco/api/custom/mailer.rb +1 -1
  32. data/lib/eco/api/error/handlers.rb +3 -3
  33. data/lib/eco/api/error.rb +17 -17
  34. data/lib/eco/api/microcases/people/apply_changes/set_account/account_excluded.rb +3 -11
  35. data/lib/eco/api/microcases/people/apply_changes/set_core/core_excluded.rb +4 -1
  36. data/lib/eco/api/microcases/people/manage/search.rb +3 -1
  37. data/lib/eco/api/organization/people.rb +1 -0
  38. data/lib/eco/api/policies.rb +2 -2
  39. data/lib/eco/api/session/batch/job.rb +2 -2
  40. data/lib/eco/api/session/batch/launcher.rb +4 -5
  41. data/lib/eco/api/session/batch/searcher.rb +4 -4
  42. data/lib/eco/api/session/config/api.rb +2 -2
  43. data/lib/eco/api/session/config/apis/enviro_spaces.rb +2 -2
  44. data/lib/eco/api/session/config/post_launch.rb +7 -4
  45. data/lib/eco/api/session/config/sftp.rb +1 -1
  46. data/lib/eco/api/session/config/tagtree.rb +1 -1
  47. data/lib/eco/api/session/config/workflow.rb +4 -4
  48. data/lib/eco/api/session/config.rb +25 -24
  49. data/lib/eco/api/session.rb +4 -4
  50. data/lib/eco/api/usecases/base_io/validations.rb +4 -3
  51. data/lib/eco/api/usecases/cli/option.rb +5 -2
  52. data/lib/eco/api/usecases/default/people/amend/clear_abilities_case.rb +2 -2
  53. data/lib/eco/api/usecases/default/people/amend/restore_db_case.rb +16 -9
  54. data/lib/eco/api/usecases/default/people/treat/analyse_people_case.rb +20 -20
  55. data/lib/eco/api/usecases/default.rb +5 -5
  56. data/lib/eco/api/usecases/default_cases/to_csv_case.rb +8 -8
  57. data/lib/eco/api/usecases/default_cases/upsert_case.rb +4 -4
  58. data/lib/eco/api/usecases/graphql/helpers/base.rb +1 -1
  59. data/lib/eco/api/usecases/graphql/helpers/location/base/tree_tracking.rb +5 -1
  60. data/lib/eco/api/usecases/graphql/helpers/location/command/diffs/stages/commandable.rb +2 -1
  61. data/lib/eco/api/usecases/graphql/helpers/location/command/result.rb +3 -3
  62. data/lib/eco/api/usecases/graphql/helpers/location/command.rb +3 -0
  63. data/lib/eco/api/usecases/graphql/samples/location/command/dsl.rb +2 -2
  64. data/lib/eco/api/usecases/graphql/samples/location/command/service/tree_update.rb +9 -3
  65. data/lib/eco/api/usecases/graphql/samples/location/service/tree_diff/convertible/inputable.rb +5 -4
  66. data/lib/eco/api/usecases/graphql/samples/location/service/tree_diff/convertible/parsing.rb +5 -2
  67. data/lib/eco/api/usecases/graphql/samples/location/service/tree_diff.rb +3 -3
  68. data/lib/eco/api/usecases/graphql/utils/sftp.rb +1 -1
  69. data/lib/eco/api/usecases/lib/{file_pattern.rb → files/file_pattern.rb} +3 -1
  70. data/lib/eco/api/usecases/lib/{sftp.rb → files/sftp.rb} +12 -3
  71. data/lib/eco/api/usecases/lib/files.rb +7 -0
  72. data/lib/eco/api/usecases/lib.rb +1 -2
  73. data/lib/eco/api/usecases/ooze_cases/export_register_case.rb +5 -5
  74. data/lib/eco/api/usecases/ooze_samples/helpers/exportable_ooze.rb +14 -11
  75. data/lib/eco/api/usecases/ooze_samples/helpers_migration/copying.rb +14 -23
  76. data/lib/eco/api/usecases/ooze_samples/helpers_migration/typed_fields_pairing.rb +49 -27
  77. data/lib/eco/api/usecases/ooze_samples/ooze_base_case.rb +9 -9
  78. data/lib/eco/api/usecases/ooze_samples/ooze_run_base_case.rb +1 -1
  79. data/lib/eco/api/usecases/ooze_samples/register_export_case.rb +25 -17
  80. data/lib/eco/api/usecases/ooze_samples/register_migration_case.rb +41 -24
  81. data/lib/eco/api/usecases/ooze_samples/register_update_case.rb +16 -15
  82. data/lib/eco/api/usecases/samples/drivers/cli/sftp_cli.rb +15 -15
  83. data/lib/eco/api/usecases/samples/drivers/cli/url_pull_cli.rb +5 -5
  84. data/lib/eco/api/usecases/samples/drivers/sftp_sample.rb +2 -2
  85. data/lib/eco/api/usecases/use_case.rb +6 -6
  86. data/lib/eco/api/usecases/use_case_chain/chaining.rb +6 -6
  87. data/lib/eco/api/usecases/use_case_chain.rb +4 -4
  88. data/lib/eco/api/usecases/use_case_io.rb +2 -1
  89. data/lib/eco/api/usecases.rb +9 -9
  90. data/lib/eco/cli/config/options_set.rb +4 -4
  91. data/lib/eco/cli/config/use_cases.rb +3 -3
  92. data/lib/eco/cli/scripting/argument.rb +1 -1
  93. data/lib/eco/cli_default/input.rb +9 -9
  94. data/lib/eco/cli_default/options.rb +125 -100
  95. data/lib/eco/cli_default/people.rb +3 -3
  96. data/lib/eco/cli_default/usecases.rb +83 -83
  97. data/lib/eco/cli_default/workflow.rb +7 -7
  98. data/lib/eco/data/files/helpers.rb +3 -3
  99. data/lib/eco/data/fuzzy_match/result.rb +69 -26
  100. data/lib/eco/data/fuzzy_match/results.rb +10 -10
  101. data/lib/eco/data/fuzzy_match/score.rb +13 -8
  102. data/lib/eco/data/fuzzy_match.rb +65 -48
  103. data/lib/eco/data/locations/node_base/treeify.rb +13 -11
  104. data/lib/eco/data/mapper.rb +4 -4
  105. data/lib/eco/language/auxiliar_logger.rb +4 -4
  106. data/lib/eco/language/delegation/const_delegator.rb +64 -0
  107. data/lib/eco/language/delegation/const_lookup_hooks.rb +81 -0
  108. data/lib/eco/language/delegation/delegated_class.rb +84 -0
  109. data/lib/eco/language/delegation.rb +8 -0
  110. data/lib/eco/language/klass/when_inherited.rb +1 -0
  111. data/lib/eco/language/methods/delegate_missing.rb +1 -0
  112. data/lib/eco/language/models/class_helpers.rb +25 -23
  113. data/lib/eco/language/models/collection.rb +12 -2
  114. data/lib/eco/language.rb +1 -0
  115. data/lib/eco/version.rb +1 -1
  116. metadata +12 -6
@@ -2,7 +2,7 @@ module Eco
2
2
  module Language
3
3
  module Models
4
4
  module ClassHelpers
5
- NOT_USED = "no_used!"
5
+ NOT_USED = 'no_used!'.freeze
6
6
 
7
7
  def redef_without_warning(const, value)
8
8
  self.class.send(:remove_const, const) if self.class.const_defined?(const)
@@ -22,24 +22,24 @@ module Eco
22
22
  # @param exception [Boolean] if it should raise exception when could not resolve
23
23
  # @return [Class] the `Class` constant
24
24
  def resolve_class(klass, source_class: self, exception: true)
25
- @resolved ||= {}
25
+ @resolved ||= {}
26
26
  @resolved[klass] ||=
27
27
  case klass
28
- when Class
29
- klass
30
- when String
31
- begin
32
- Kernel.const_get(klass)
33
- rescue NameError => e
34
- raise if exception
35
- end
36
- when Symbol
37
- source_class.resolve_class(source_class.send(klass))
38
- when Hash
39
- referrer, referred = klass.first
40
- resolve_class(referred, source_class: referrer, exception: exception)
41
- else
42
- raise "Unknown class: #{klass}" if exception
28
+ when Class
29
+ klass
30
+ when String
31
+ begin
32
+ Kernel.const_get(klass)
33
+ rescue NameError
34
+ raise if exception
35
+ end
36
+ when Symbol
37
+ source_class.resolve_class(source_class.send(klass))
38
+ when Hash
39
+ referrer, referred = klass.first
40
+ resolve_class(referred, source_class: referrer, exception: exception)
41
+ else
42
+ raise "Unknown class: #{klass}" if exception
43
43
  end
44
44
  end
45
45
 
@@ -48,11 +48,11 @@ module Eco
48
48
  # @param key [String, Symbol] to be normalized
49
49
  # @return [String] a correct constant name
50
50
  def to_constant(key)
51
- str_name = key.to_s.strip.split(/::/).compact.map do |str|
51
+ key.to_s.strip.split('::').compact.map do |str|
52
52
  str.slice(0).upcase + str.slice(1..-1)
53
- end.join("").split(/[\-\_ :]+/i).compact.map do |str|
53
+ end.join.split(/[\-\_ :]+/i).compact.map do |str|
54
54
  str.slice(0).upcase + str.slice(1..-1)
55
- end.join("")
55
+ end.join
56
56
  end
57
57
 
58
58
  # Helper to create an instance variable `name`
@@ -75,7 +75,7 @@ module Eco
75
75
  name = name.to_s.to_sym.freeze
76
76
  class_name = to_constant(name)
77
77
 
78
- unless target_class = resolve_class("#{namespace}::#{class_name}", exception: false)
78
+ unless (target_class = resolve_class("#{namespace}::#{class_name}", exception: false))
79
79
  target_class = Class.new(inherits)
80
80
  Kernel.const_get(namespace.to_s).const_set class_name, target_class
81
81
  end
@@ -108,9 +108,9 @@ module Eco
108
108
  # Builds the attr_reader and attr_writer of `attrs` and registers the associated instance variable as inheritable.
109
109
  def inheritable_attrs(*attrs)
110
110
  attrs.each do |attr|
111
- class_eval %(
111
+ class_eval %( # rubocop:disable Style/DocumentDynamicEvalDefinition
112
112
  class << self; attr_accessor :#{attr} end
113
- )
113
+ ), __FILE__, __LINE__ - 2
114
114
  end
115
115
  inheritable_class_vars(*attrs)
116
116
  end
@@ -122,6 +122,8 @@ module Eco
122
122
  # - mutating methods would reflect the changes on other classes as well
123
123
  # - therefore, `freeze` will be called on the values that are inherited.
124
124
  def inherited(subclass)
125
+ super
126
+
125
127
  inheritable_class_vars.each do |var|
126
128
  instance_var = instance_variable_name(var)
127
129
  value = instance_variable_get(instance_var)
@@ -22,11 +22,13 @@ module Eco
22
22
  def attrs_create_method(attrs, method)
23
23
  attrs.each do |attr|
24
24
  attr = attr.to_s
25
+
25
26
  if method.include?("attr")
26
27
  attr_method = method.sub("attr", attr)
27
28
  else
28
29
  attr_method = "#{attr}_#{method}"
29
30
  end
31
+
30
32
  define_method attr_method do |*args|
31
33
  send(method, attr, *args)
32
34
  end
@@ -36,6 +38,7 @@ module Eco
36
38
 
37
39
  def initialize(data = [], klass:, factory: nil, handy: Eco::Assets::Language.new)
38
40
  raise "Raise klass required, given: #{klass}" unless klass
41
+
39
42
  @klass = klass
40
43
  @factory = factory
41
44
  @handy = handy
@@ -70,6 +73,7 @@ module Eco
70
73
 
71
74
  def each(&block)
72
75
  return to_enum(:each) unless block
76
+
73
77
  @items.each(&block)
74
78
  end
75
79
 
@@ -104,6 +108,7 @@ module Eco
104
108
 
105
109
  def attr(attr, value = true, modifier = default_modifier)
106
110
  return present(attr, value) if boolean?(value)
111
+
107
112
  select do |object|
108
113
  match?(attr_value(object, attr), value, modifier)
109
114
  end.then do |matching|
@@ -113,6 +118,7 @@ module Eco
113
118
 
114
119
  def attr?(attr, value = true, modifier = default_modifier)
115
120
  return present(attr, value).length == length if boolean?(value)
121
+
116
122
  match?(attrs(attr), value, modifier.new.reverse)
117
123
  end
118
124
 
@@ -130,6 +136,7 @@ module Eco
130
136
 
131
137
  def group_by(attr = nil, &block)
132
138
  return to_h(attr) if attr
139
+
133
140
  to_a.group_by(&block) if block
134
141
  end
135
142
 
@@ -138,6 +145,7 @@ module Eco
138
145
  def to_h(attr, &block)
139
146
  return to_a.group_by(&block) if block
140
147
  raise "And attr or a block are required. Given attr: #{attr}" unless attr
148
+
141
149
  to_a.group_by { |object| object.method(attr).call }
142
150
  end
143
151
  # @!endgroup
@@ -175,16 +183,18 @@ module Eco
175
183
  private
176
184
 
177
185
  def attr_value(obj, attr)
178
- return nil unless obj && attr
186
+ return unless obj && attr
187
+
179
188
  if obj.is_a?(Hash)
180
189
  obj[attr]
181
- elsif obj.respond_to?(attr.to_sym)
190
+ elsif obj.respond_to?(attr.to_sym, true)
182
191
  obj.send(attr)
183
192
  end
184
193
  end
185
194
 
186
195
  def attr_value_present?(obj, attr)
187
196
  return false unless (value = attr_value(obj, attr))
197
+
188
198
  if value.is_a?(Enumerable)
189
199
  value.count > 1
190
200
  elsif value.is_a?(String)
data/lib/eco/language.rb CHANGED
@@ -8,6 +8,7 @@ require_relative 'language/methods'
8
8
  require_relative 'language/models'
9
9
  require_relative 'language/auxiliar_logger'
10
10
  require_relative 'language/basic_logger'
11
+ require_relative 'language/delegation'
11
12
  require_relative 'language/curry'
12
13
  require_relative 'language/hash_transform_modifier'
13
14
  require_relative 'language/hash_transform'
data/lib/eco/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Eco
2
- VERSION = '3.0.26'.freeze
2
+ VERSION = '3.0.27'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eco-helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.26
4
+ version: 3.0.27
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oscar Segura
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-03-23 00:00:00.000000000 Z
11
+ date: 2025-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -229,7 +229,7 @@ dependencies:
229
229
  version: '0.10'
230
230
  - - ">="
231
231
  - !ruby/object:Gem::Version
232
- version: 0.10.8
232
+ version: 0.10.9
233
233
  type: :runtime
234
234
  prerelease: false
235
235
  version_requirements: !ruby/object:Gem::Requirement
@@ -239,7 +239,7 @@ dependencies:
239
239
  version: '0.10'
240
240
  - - ">="
241
241
  - !ruby/object:Gem::Version
242
- version: 0.10.8
242
+ version: 0.10.9
243
243
  - !ruby/object:Gem::Dependency
244
244
  name: ecoportal-api-graphql
245
245
  requirement: !ruby/object:Gem::Requirement
@@ -568,6 +568,7 @@ files:
568
568
  - lib/eco/api/common/people.rb
569
569
  - lib/eco/api/common/people/base_parser.rb
570
570
  - lib/eco/api/common/people/default_parsers.rb
571
+ - lib/eco/api/common/people/default_parsers/archived_parser.rb
571
572
  - lib/eco/api/common/people/default_parsers/boolean_parser.rb
572
573
  - lib/eco/api/common/people/default_parsers/csv_parser.rb
573
574
  - lib/eco/api/common/people/default_parsers/date_parser.rb
@@ -866,8 +867,9 @@ files:
866
867
  - lib/eco/api/usecases/graphql/utils/sftp.rb
867
868
  - lib/eco/api/usecases/lib.rb
868
869
  - lib/eco/api/usecases/lib/error_handling.rb
869
- - lib/eco/api/usecases/lib/file_pattern.rb
870
- - lib/eco/api/usecases/lib/sftp.rb
870
+ - lib/eco/api/usecases/lib/files.rb
871
+ - lib/eco/api/usecases/lib/files/file_pattern.rb
872
+ - lib/eco/api/usecases/lib/files/sftp.rb
871
873
  - lib/eco/api/usecases/ooze_cases.rb
872
874
  - lib/eco/api/usecases/ooze_cases/export_register_case.rb
873
875
  - lib/eco/api/usecases/ooze_samples.rb
@@ -984,6 +986,10 @@ files:
984
986
  - lib/eco/language/auxiliar_logger.rb
985
987
  - lib/eco/language/basic_logger.rb
986
988
  - lib/eco/language/curry.rb
989
+ - lib/eco/language/delegation.rb
990
+ - lib/eco/language/delegation/const_delegator.rb
991
+ - lib/eco/language/delegation/const_lookup_hooks.rb
992
+ - lib/eco/language/delegation/delegated_class.rb
987
993
  - lib/eco/language/hash_transform.rb
988
994
  - lib/eco/language/hash_transform_modifier.rb
989
995
  - lib/eco/language/klass.rb