eco-helpers 3.0.26 → 3.0.28

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 (146) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +76 -5
  3. data/eco-helpers.gemspec +2 -1
  4. data/lib/eco/api/common/class_helpers.rb +1 -136
  5. data/lib/eco/api/common/loaders/base.rb +1 -1
  6. data/lib/eco/api/common/loaders/case_base.rb +1 -1
  7. data/lib/eco/api/common/loaders/config/cli.rb +1 -1
  8. data/lib/eco/api/common/loaders/config/session.rb +1 -1
  9. data/lib/eco/api/common/loaders/config/workflow.rb +1 -1
  10. data/lib/eco/api/common/loaders/config.rb +2 -5
  11. data/lib/eco/api/common/loaders/error_handler.rb +1 -1
  12. data/lib/eco/api/common/loaders/parser.rb +2 -2
  13. data/lib/eco/api/common/loaders/policy.rb +1 -1
  14. data/lib/eco/api/common/loaders/use_case/target_model.rb +1 -1
  15. data/lib/eco/api/common/loaders/use_case/type.rb +1 -1
  16. data/lib/eco/api/common/loaders/use_case.rb +1 -1
  17. data/lib/eco/api/common/people/default_parsers/archived_parser.rb +19 -0
  18. data/lib/eco/api/common/people/default_parsers/boolean_parser.rb +4 -4
  19. data/lib/eco/api/common/people/default_parsers/date_parser.rb +3 -3
  20. data/lib/eco/api/common/people/default_parsers/freemium_parser.rb +6 -6
  21. data/lib/eco/api/common/people/default_parsers/login_providers_parser.rb +3 -3
  22. data/lib/eco/api/common/people/default_parsers/multi_parser.rb +4 -4
  23. data/lib/eco/api/common/people/default_parsers/policy_groups_parser.rb +9 -6
  24. data/lib/eco/api/common/people/default_parsers/send_invites_parser.rb +6 -5
  25. data/lib/eco/api/common/people/default_parsers/xls_parser.rb +2 -2
  26. data/lib/eco/api/common/people/default_parsers.rb +1 -0
  27. data/lib/eco/api/common/people/entries.rb +16 -15
  28. data/lib/eco/api/common/people/person_entry.rb +53 -37
  29. data/lib/eco/api/common/people/person_parser.rb +8 -6
  30. data/lib/eco/api/common/people/supervisor_helpers.rb +3 -1
  31. data/lib/eco/api/common/session/logger/channels.rb +2 -1
  32. data/lib/eco/api/common/session/logger.rb +2 -2
  33. data/lib/eco/api/common/session/mailer/aws_provider.rb +3 -2
  34. data/lib/eco/api/common/session/mailer/provider_base.rb +2 -1
  35. data/lib/eco/api/common/session/mailer/sendgrid_provider.rb +9 -9
  36. data/lib/eco/api/common/session/mailer.rb +5 -3
  37. data/lib/eco/api/common/session/sftp.rb +11 -4
  38. data/lib/eco/api/common/version_patches/object.rb +2 -1
  39. data/lib/eco/api/custom/mailer.rb +1 -1
  40. data/lib/eco/api/error/handlers.rb +3 -3
  41. data/lib/eco/api/error.rb +17 -17
  42. data/lib/eco/api/microcases/people/apply_changes/set_account/account_excluded.rb +3 -11
  43. data/lib/eco/api/microcases/people/apply_changes/set_core/core_excluded.rb +4 -1
  44. data/lib/eco/api/microcases/people/manage/search.rb +3 -1
  45. data/lib/eco/api/organization/people.rb +1 -0
  46. data/lib/eco/api/policies.rb +2 -2
  47. data/lib/eco/api/session/batch/job/sets.rb +1 -0
  48. data/lib/eco/api/session/batch/job/type.rb +1 -0
  49. data/lib/eco/api/session/batch/job.rb +2 -2
  50. data/lib/eco/api/session/batch/launcher/valid_methods.rb +3 -2
  51. data/lib/eco/api/session/batch/launcher.rb +4 -5
  52. data/lib/eco/api/session/batch/searcher.rb +4 -4
  53. data/lib/eco/api/session/config/api.rb +2 -2
  54. data/lib/eco/api/session/config/apis/enviro_spaces.rb +2 -2
  55. data/lib/eco/api/session/config/post_launch.rb +7 -4
  56. data/lib/eco/api/session/config/sftp.rb +1 -1
  57. data/lib/eco/api/session/config/tagtree.rb +1 -1
  58. data/lib/eco/api/session/config/workflow.rb +4 -4
  59. data/lib/eco/api/session/config.rb +25 -24
  60. data/lib/eco/api/session.rb +4 -4
  61. data/lib/eco/api/usecases/base_case/model.rb +2 -1
  62. data/lib/eco/api/usecases/base_case/type.rb +2 -1
  63. data/lib/eco/api/usecases/base_io/validations.rb +6 -4
  64. data/lib/eco/api/usecases/cli/option.rb +5 -2
  65. data/lib/eco/api/usecases/default/people/amend/clear_abilities_case.rb +2 -2
  66. data/lib/eco/api/usecases/default/people/amend/restore_db_case.rb +16 -9
  67. data/lib/eco/api/usecases/default/people/treat/analyse_people_case.rb +20 -20
  68. data/lib/eco/api/usecases/default.rb +5 -5
  69. data/lib/eco/api/usecases/default_cases/to_csv_case.rb +8 -8
  70. data/lib/eco/api/usecases/default_cases/upsert_case.rb +4 -4
  71. data/lib/eco/api/usecases/graphql/helpers/base.rb +1 -1
  72. data/lib/eco/api/usecases/graphql/helpers/location/base/tree_tracking.rb +5 -1
  73. data/lib/eco/api/usecases/graphql/helpers/location/command/diffs/stages/commandable.rb +5 -3
  74. data/lib/eco/api/usecases/graphql/helpers/location/command/result.rb +3 -3
  75. data/lib/eco/api/usecases/graphql/helpers/location/command.rb +3 -0
  76. data/lib/eco/api/usecases/graphql/samples/location/command/dsl.rb +2 -2
  77. data/lib/eco/api/usecases/graphql/samples/location/command/service/tree_update.rb +9 -3
  78. data/lib/eco/api/usecases/graphql/samples/location/service/tree_diff/convertible/inputable.rb +5 -4
  79. data/lib/eco/api/usecases/graphql/samples/location/service/tree_diff/convertible/parsing.rb +5 -2
  80. data/lib/eco/api/usecases/graphql/samples/location/service/tree_diff.rb +3 -3
  81. data/lib/eco/api/usecases/graphql/utils/sftp.rb +1 -1
  82. data/lib/eco/api/usecases/lib/{file_pattern.rb → files/file_pattern.rb} +1 -1
  83. data/lib/eco/api/usecases/lib/{sftp.rb → files/sftp.rb} +19 -7
  84. data/lib/eco/api/usecases/lib/files.rb +7 -0
  85. data/lib/eco/api/usecases/lib.rb +1 -2
  86. data/lib/eco/api/usecases/ooze_cases/export_register_case.rb +5 -5
  87. data/lib/eco/api/usecases/ooze_samples/helpers/exportable_ooze.rb +14 -11
  88. data/lib/eco/api/usecases/ooze_samples/helpers_migration/copying.rb +14 -23
  89. data/lib/eco/api/usecases/ooze_samples/helpers_migration/typed_fields_pairing.rb +49 -27
  90. data/lib/eco/api/usecases/ooze_samples/ooze_base_case.rb +9 -9
  91. data/lib/eco/api/usecases/ooze_samples/ooze_run_base_case.rb +1 -1
  92. data/lib/eco/api/usecases/ooze_samples/register_export_case.rb +25 -17
  93. data/lib/eco/api/usecases/ooze_samples/register_migration_case.rb +41 -24
  94. data/lib/eco/api/usecases/ooze_samples/register_update_case.rb +16 -15
  95. data/lib/eco/api/usecases/samples/drivers/cli/sftp_cli.rb +15 -15
  96. data/lib/eco/api/usecases/samples/drivers/cli/url_pull_cli.rb +5 -5
  97. data/lib/eco/api/usecases/samples/drivers/sftp_sample.rb +5 -3
  98. data/lib/eco/api/usecases/use_case.rb +6 -6
  99. data/lib/eco/api/usecases/use_case_chain/chaining.rb +6 -6
  100. data/lib/eco/api/usecases/use_case_chain.rb +4 -4
  101. data/lib/eco/api/usecases/use_case_io.rb +2 -1
  102. data/lib/eco/api/usecases.rb +9 -9
  103. data/lib/eco/cli/config/options_set.rb +4 -4
  104. data/lib/eco/cli/config/use_cases.rb +3 -3
  105. data/lib/eco/cli/scripting/argument.rb +1 -1
  106. data/lib/eco/cli_default/input.rb +9 -9
  107. data/lib/eco/cli_default/options.rb +125 -100
  108. data/lib/eco/cli_default/people.rb +3 -3
  109. data/lib/eco/cli_default/usecases.rb +83 -83
  110. data/lib/eco/cli_default/workflow.rb +7 -7
  111. data/lib/eco/data/files/helpers.rb +7 -5
  112. data/lib/eco/data/fuzzy_match/result.rb +69 -26
  113. data/lib/eco/data/fuzzy_match/results.rb +10 -10
  114. data/lib/eco/data/fuzzy_match/score.rb +13 -8
  115. data/lib/eco/data/fuzzy_match.rb +69 -50
  116. data/lib/eco/data/hashes/diff_result/meta.rb +2 -1
  117. data/lib/eco/data/locations/node_base/treeify.rb +13 -11
  118. data/lib/eco/data/locations/node_diff/accessors.rb +2 -1
  119. data/lib/eco/data/mapper.rb +4 -4
  120. data/lib/eco/language/auxiliar_logger.rb +4 -4
  121. data/lib/eco/language/delegation/chainable_delegator.rb +18 -0
  122. data/lib/eco/language/delegation/delegating_missing.rb +104 -0
  123. data/lib/eco/language/delegation/delegating_missing_const.rb +53 -0
  124. data/lib/eco/language/delegation/delegating_missing_on_class.rb +53 -0
  125. data/lib/eco/language/delegation/for_delegator/const_delegator.rb +66 -0
  126. data/lib/eco/language/delegation/for_delegator/const_lookup_hooks.rb +99 -0
  127. data/lib/eco/language/delegation/for_delegator/delegated_class.rb +71 -0
  128. data/lib/eco/language/delegation/for_delegator.rb +11 -0
  129. data/lib/eco/language/delegation.rb +10 -0
  130. data/lib/eco/language/klass/builder.rb +29 -0
  131. data/lib/eco/language/klass/helpers_built.rb +9 -0
  132. data/lib/eco/language/klass/hierarchy.rb +34 -0
  133. data/lib/eco/language/klass/inheritable_class_vars.rb +45 -0
  134. data/lib/eco/language/klass/naming.rb +21 -0
  135. data/lib/eco/language/klass/resolver.rb +30 -0
  136. data/lib/eco/language/klass/when_inherited.rb +11 -13
  137. data/lib/eco/language/klass.rb +6 -0
  138. data/lib/eco/language/methods.rb +0 -1
  139. data/lib/eco/language/models/class_helpers.rb +25 -23
  140. data/lib/eco/language/models/collection.rb +12 -2
  141. data/lib/eco/language/strings/underscore.rb +17 -0
  142. data/lib/eco/language/strings.rb +8 -0
  143. data/lib/eco/language.rb +2 -0
  144. data/lib/eco/version.rb +1 -1
  145. metadata +39 -7
  146. data/lib/eco/language/methods/delegate_missing.rb +0 -29
@@ -15,7 +15,7 @@ class Eco::API::UseCases::OozeSamples::RegisterExportCase < Eco::API::Common::Lo
15
15
 
16
16
  include Eco::API::UseCases::OozeSamples::Helpers
17
17
 
18
- name "register-export-case"
18
+ name 'register-export-case'
19
19
  type :other
20
20
 
21
21
  attr_reader :session, :options, :usecase
@@ -58,29 +58,29 @@ class Eco::API::UseCases::OozeSamples::RegisterExportCase < Eco::API::Common::Lo
58
58
  # @param ooze_id [String]
59
59
  # @return [Ecoportal::API::V2::Page]
60
60
  def build_full_ooze(ooze_id) # rubocop:disable Metrics/AbcSize
61
- return unless (page = ooze(ooze_id))
61
+ return unless (page = ooze(ooze_id))
62
62
  return page unless page.is_a?(Ecoportal::API::V2::Pages::PageStage)
63
63
 
64
64
  pending_stage_ids = page.stages.ordered.map(&:id) - [page.current_stage_id]
65
65
  state = page.state
66
66
  secs_doc = page.sections.doc
67
67
  flds_doc = page.components.doc
68
- hsecs = secs_doc.each_with_object({}) {|sec, h| h[sec["id"]] = sec}
69
- hflds = flds_doc.each_with_object({}) {|fld, h| h[fld["id"]] = fld}
68
+ hsecs = secs_doc.each_with_object({}) {|sec, h| h[sec['id']] = sec}
69
+ hflds = flds_doc.each_with_object({}) {|fld, h| h[fld['id']] = fld}
70
70
 
71
71
  pending_stage_ids.each do |id|
72
72
  next unless (other_stage = stage(id, ooze: page))
73
73
 
74
- state = "inprogress" unless other_stage.state == "complete"
74
+ state = 'inprogress' unless other_stage.state == 'complete'
75
75
  other_stage.sections.doc.each do |sec_doc|
76
- unless hsecs.key?(id = sec_doc["id"])
76
+ unless hsecs.key?(id = sec_doc['id'])
77
77
  hsecs[id] = sec_doc
78
78
  secs_doc << sec_doc
79
79
  end
80
80
  end
81
81
 
82
82
  other_stage.components.doc.each do |comp_doc|
83
- unless hflds.key?(id = comp_doc["id"])
83
+ unless hflds.key?(id = comp_doc['id'])
84
84
  hflds[id] = comp_doc
85
85
  flds_doc << comp_doc
86
86
  end
@@ -93,21 +93,27 @@ class Eco::API::UseCases::OozeSamples::RegisterExportCase < Eco::API::Common::Lo
93
93
  end
94
94
 
95
95
  def batched_search_results
96
- raise "Missing block. It yields in slices of #{self.class.batch_size} results" unless block_given?
96
+ msg = "Missing block. It yields in slices of #{self.class.batch_size} results"
97
+ raise msg unless block_given?
98
+
97
99
  results_preview
98
100
  results = []
101
+
99
102
  apiv2.registers.search(register_id, search_options) do |page_result|
100
103
  results << page_result
104
+
101
105
  if results.length >= self.class.batch_size
102
106
  yield(results)
103
107
  results = []
104
108
  end
105
109
  end
110
+
106
111
  yield(results) unless results.empty?
107
112
  end
108
113
 
109
114
  def ooze(ooze_id = nil, stage_id: nil)
110
115
  return target unless ooze_id
116
+
111
117
  apiv2.pages.get(ooze_id, stage_id: stage_id).tap do |ooze|
112
118
  if ooze
113
119
  new_target(ooze)
@@ -143,21 +149,22 @@ class Eco::API::UseCases::OozeSamples::RegisterExportCase < Eco::API::Common::Lo
143
149
  end
144
150
 
145
151
  def default_proceed
146
- "Y"
152
+ 'Y'
147
153
  end
148
154
 
149
155
  def results_preview
150
156
  apiv2.registers.search(register_id, search_options.merge(only_first: true)).tap do |search_results|
151
157
  str_results = "Total target entries: #{search_results.total} (out of #{search_results.total_before_filtering})"
152
158
  session.prompt_user(
153
- "Do you want to proceed (y/N):",
159
+ 'Do you want to proceed (y/N):',
154
160
  explanation: str_results,
155
161
  default: default_proceed,
156
162
  timeout: 10
157
163
  ) do |res|
158
- next if res.upcase.start_with?("Y")
159
- puts "..."
160
- log(:info) { "Aborting script..." }
164
+ next if res.upcase.start_with?('Y')
165
+
166
+ puts '...'
167
+ log(:info) { 'Aborting script...' }
161
168
  exit(0)
162
169
  end
163
170
  end
@@ -165,20 +172,21 @@ class Eco::API::UseCases::OozeSamples::RegisterExportCase < Eco::API::Common::Lo
165
172
 
166
173
  def search_options
167
174
  @search_options ||= {}.tap do |opts|
168
- opts.merge!(sort: "created_at")
169
- opts.merge!(dir: "asc")
175
+ opts.merge!(sort: 'created_at')
176
+ opts.merge!(dir: 'asc')
170
177
  opts.merge!(query: conf_search) if conf_search
171
178
  opts.merge!(filters: conf_filters)
172
179
  end
173
180
  end
174
181
 
175
182
  def conf_filters
176
- return filters if respond_to?(:filters)
183
+ return filters if respond_to?(:filters, true)
184
+
177
185
  []
178
186
  end
179
187
 
180
188
  def conf_search
181
- search if respond_to?(:search)
189
+ search if respond_to?(:search, true)
182
190
  end
183
191
 
184
192
  def register_id
@@ -47,9 +47,9 @@ class Eco::API::UseCases::OozeSamples::RegisterMigrationCase < Eco::API::UseCase
47
47
  @csv = []
48
48
  super(session, options, usecase, &block)
49
49
  else
50
- CSV.open(out_csv_filename, "w") do |csv|
50
+ CSV.open(out_csv_filename, 'w') do |csv|
51
51
  @csv = csv
52
- csv << ["src_page_id", "dst_page_id"]
52
+ csv << %w[src_page_id dst_page_id]
53
53
  super(session, options, usecase, &block)
54
54
  end
55
55
  log(:info) { "File '#{out_csv_filename}' has been created." }
@@ -64,11 +64,11 @@ class Eco::API::UseCases::OozeSamples::RegisterMigrationCase < Eco::API::UseCase
64
64
  # # More custom logics
65
65
  # end
66
66
 
67
- def process_ooze
67
+ def process_ooze # rubocop:disable Metrics/AbcSize
68
68
  with_target_stage(self.class::SOURCE_STAGE) do |source|
69
69
  draft_reference = object_reference(source)
70
70
  creating_new_page(draft_reference, template_id: elf.class::TEMPLATE_ID) do |draft|
71
- draft.base_tags << ["IMPORTED", "MIGRATED"]
71
+ draft.base_tags << %w[IMPORTED MIGRATED]
72
72
 
73
73
  pairing_tracking = copy_pairings(source, draft)
74
74
 
@@ -78,17 +78,24 @@ class Eco::API::UseCases::OozeSamples::RegisterMigrationCase < Eco::API::UseCase
78
78
  yield(draft, source, fields_tracker: pairing_tracking)
79
79
  end
80
80
 
81
- if msg = pairing_tracking.report_src_unpaired(only_present: !self.class::REPORT_SRC_EMTPY, only_indexed: !self.class::REPORT_SRC_DEINDEX)
82
- log(:warn) { msg }
83
- end
84
-
85
- if msg = pairing_tracking.report_multi_pairs(only_present: !self.class::REPORT_SRC_EMTPY, only_indexed: !self.class::REPORT_SRC_DEINDEX, dst_exclude_ximport: !self.class::REPORT_DST_XIMPORT)
86
- log(:warn) { msg }
87
- end
88
-
89
- if msg = pairing_tracking.report_dst_unpaired(only_required: false, exclude_ximport: !self.class::REPORT_DST_XIMPORT)
90
- log(:warn) { msg }
91
- end
81
+ msg = pairing_tracking.report_src_unpaired(
82
+ only_present: !self.class::REPORT_SRC_EMTPY,
83
+ only_indexed: !self.class::REPORT_SRC_DEINDEX
84
+ )
85
+ log(:warn) { msg } if msg
86
+
87
+ msg = pairing_tracking.report_multi_pairs(
88
+ only_present: !self.class::REPORT_SRC_EMTPY,
89
+ only_indexed: !self.class::REPORT_SRC_DEINDEX,
90
+ dst_exclude_ximport: !self.class::REPORT_DST_XIMPORT
91
+ )
92
+ log(:warn) { msg } if msg
93
+
94
+ msg = pairing_tracking.report_dst_unpaired(
95
+ only_required: false,
96
+ exclude_ximport: !self.class::REPORT_DST_XIMPORT
97
+ )
98
+ log(:warn) { msg } if msg
92
99
  end
93
100
  end
94
101
  end
@@ -101,8 +108,18 @@ class Eco::API::UseCases::OozeSamples::RegisterMigrationCase < Eco::API::UseCase
101
108
  src_excluded: excluded_fields(src),
102
109
  dst_excluded: excluded_fields(dst)
103
110
  }
104
- copy_generic_paired_fields(src, dst, **params.merge(exclude_ximport: self.class::EXCLUDE_XIMPORT), &after_copy).tap do |pairing_tracking|
105
- copy_mapped_fields(src, dst, **params.merge(fields_tracker: pairing_tracking), &after_copy)
111
+ copy_generic_paired_fields(
112
+ src,
113
+ dst,
114
+ **params.merge(exclude_ximport: self.class::EXCLUDE_XIMPORT),
115
+ &after_copy
116
+ ).tap do |pairs_track|
117
+ copy_mapped_fields(
118
+ src,
119
+ dst,
120
+ **params.merge(fields_tracker: pairs_track),
121
+ &after_copy
122
+ )
106
123
  end
107
124
  end
108
125
 
@@ -110,7 +127,8 @@ class Eco::API::UseCases::OozeSamples::RegisterMigrationCase < Eco::API::UseCase
110
127
  return [] unless respond_to?(:excluded_field_hooks, true)
111
128
  excluded_field_hooks.each_with_object([]) do |(type, hooks), excluded|
112
129
  hooks.each do |hook|
113
- type = (type == "all")? nil : type
130
+ type = nil if type == 'all'
131
+
114
132
  excluded.push(*with_fields(entry, label: to_regex(hook), type: type))
115
133
  end
116
134
  end
@@ -125,7 +143,8 @@ class Eco::API::UseCases::OozeSamples::RegisterMigrationCase < Eco::API::UseCase
125
143
  def copy_mapped_fields(src, dst, **kargs, &after_copy)
126
144
  return [] unless field_maps?
127
145
  field_maps.each do |type, field_hooks|
128
- type = (type == "all")? nil : type
146
+ type = nil if type == 'all'
147
+
129
148
  field_hooks.each do |hook_name|
130
149
  copy_hooked_fields(src, dst, hook: hook_name, type: type, **kargs, &after_copy)
131
150
  end
@@ -137,17 +156,15 @@ class Eco::API::UseCases::OozeSamples::RegisterMigrationCase < Eco::API::UseCase
137
156
  end
138
157
 
139
158
  def callback(sym)
140
- if callback?(sym)
141
- method(callback_name(sym))
142
- end
159
+ method(callback_name(sym)) if callback?(sym)
143
160
  end
144
161
 
145
162
  def callback_name(sym)
146
- "#{sym}_callback".to_sym
163
+ :"#{sym}_callback"
147
164
  end
148
165
 
149
166
  def with_target_stage(name)
150
- if stg = target_stage(name)
167
+ if (stg = target_stage(name))
151
168
  yield(stg)
152
169
  else
153
170
  log(:warn) { "Entry '#{target.id}' does not have stage '#{name}'" }
@@ -15,7 +15,7 @@ class Eco::API::UseCases::OozeSamples::RegisterUpdateCase < Eco::API::UseCases::
15
15
  end
16
16
  end
17
17
 
18
- name "register-update-case"
18
+ name 'register-update-case'
19
19
  type :other
20
20
 
21
21
  attr_reader :retrieved_oozes, :non_retrieved_oozes
@@ -33,7 +33,7 @@ class Eco::API::UseCases::OozeSamples::RegisterUpdateCase < Eco::API::UseCases::
33
33
  process_ooze(&block)
34
34
  end
35
35
  elsif mode == :delegate
36
- raise "You need to pass a block when running main in `:delegate` mode" unless block_given?
36
+ raise 'You need to pass a block when running main in `:delegate` mode' unless block_given?
37
37
  yield
38
38
  end
39
39
  end
@@ -42,7 +42,7 @@ class Eco::API::UseCases::OozeSamples::RegisterUpdateCase < Eco::API::UseCases::
42
42
  end
43
43
 
44
44
  def process_ooze(_ooze = target)
45
- raise "You need to define this method"
45
+ raise 'You need to define this method'
46
46
  end
47
47
 
48
48
  private
@@ -63,8 +63,8 @@ class Eco::API::UseCases::OozeSamples::RegisterUpdateCase < Eco::API::UseCases::
63
63
 
64
64
  def new_target(object, warn_pending_changes: false)
65
65
  enqueue(object)
66
- super(object, warn_pending_changes: warn_pending_changes) do |pending|
67
- #enqueue(pending)
66
+ super do |pending|
67
+ # enqueue(pending)
68
68
  end
69
69
  end
70
70
 
@@ -79,7 +79,7 @@ class Eco::API::UseCases::OozeSamples::RegisterUpdateCase < Eco::API::UseCases::
79
79
  end
80
80
 
81
81
  if (pending = queue_shift(page_result.id)) && dirty?(pending)
82
- msg = "Inconsistent search results. "
82
+ msg = 'Inconsistent search results. '
83
83
  msg << "Launching update on '#{object_reference(pending)}' to be able to queue it back"
84
84
  log(:warn) { msg }
85
85
  update_ooze(pending)
@@ -186,7 +186,7 @@ class Eco::API::UseCases::OozeSamples::RegisterUpdateCase < Eco::API::UseCases::
186
186
  end
187
187
 
188
188
  def backup_patch!(ooze = target)
189
- return if (patch_doc(ooze) || {})["page"]
189
+ return if (patch_doc(ooze) || {})['page']
190
190
 
191
191
  log(:info) {
192
192
  "No changes to update for #{object_reference(ooze)}."
@@ -198,17 +198,17 @@ class Eco::API::UseCases::OozeSamples::RegisterUpdateCase < Eco::API::UseCases::
198
198
  @total_search_oozes = search_results.total
199
199
 
200
200
  str_results = "Total target entries: #{search_results.total} (out of #{search_results.total_before_filtering})"
201
- default_answer = session.config.run_mode_remote?? "Y" : "N"
201
+ default_answer = session.config.run_mode_remote?? 'Y' : 'N'
202
202
 
203
203
  session.prompt_user(
204
- "Do you want to proceed (y/N):",
204
+ 'Do you want to proceed (y/N):',
205
205
  explanation: str_results,
206
206
  default: default_answer,
207
207
  timeout: 10
208
208
  ) do |res|
209
- next if res.upcase.start_with?("Y")
210
- puts "..."
211
- log(:info) { "Aborting script..." }
209
+ next if res.upcase.start_with?('Y')
210
+ puts '...'
211
+ log(:info) { 'Aborting script...' }
212
212
  exit(0)
213
213
  end
214
214
  end
@@ -233,7 +233,7 @@ class Eco::API::UseCases::OozeSamples::RegisterUpdateCase < Eco::API::UseCases::
233
233
 
234
234
  def kpis_message
235
235
  msg = []
236
- msg << "Run end:"
236
+ msg << 'Run end:'
237
237
  msg << " * Search results: #{total_search_oozes}"
238
238
  msg << " * Duplicated search results #{dupped_search_oozes}"
239
239
  msg << " * Retrieved a total of #{retrieved_oozes}"
@@ -254,12 +254,13 @@ class Eco::API::UseCases::OozeSamples::RegisterUpdateCase < Eco::API::UseCases::
254
254
  end
255
255
 
256
256
  def conf_filters
257
- return filters if respond_to?(:filters)
257
+ return filters if respond_to?(:filters, true)
258
+
258
259
  []
259
260
  end
260
261
 
261
262
  def conf_search
262
- search if respond_to?(:search)
263
+ search if respond_to?(:search, true)
263
264
  end
264
265
 
265
266
  def register_id
@@ -1,45 +1,45 @@
1
1
  class Eco::API::UseCases::Samples::Drivers::Sftp
2
2
  class Cli < Eco::API::UseCases::Cli
3
- desc "SFTP case: manages remote files that match a file pattern"
3
+ desc 'SFTP case: manages remote files that match a file pattern'
4
4
 
5
- add_option("-file-pattern-const", "Constant that should be used as a pattern") do |options|
6
- pattern_const = SCR.get_arg("-file-pattern-const", with_param: true)
5
+ add_option('-file-pattern-const', 'Constant that should be used as a pattern') do |options|
6
+ pattern_const = SCR.get_arg('-file-pattern-const', with_param: true)
7
7
  options.deep_merge!(sftp: {file_pattern_const: pattern_const})
8
8
  end
9
9
 
10
- add_option("-list", "It lists all the files present in the remote folder for the current environment.") do |options|
10
+ add_option('-list', 'It lists all the files present in the remote folder for the current environment.') do |options|
11
11
  options.deep_merge!(sftp: {command: :list})
12
12
  end
13
13
 
14
- add_option("-get-last", "It gets the last file present in the remote folder for the current environment.") do |options|
14
+ add_option('-get-last', 'It gets the last file present in the remote folder for the current environment.') do |options|
15
15
  options.deep_merge!(sftp: {command: :get_last})
16
16
  end
17
17
 
18
- add_option("-get", "It gets all the files present in the remote folder for the current environment.") do |options|
18
+ add_option('-get', 'It gets all the files present in the remote folder for the current environment.') do |options|
19
19
  options.deep_merge!(sftp: {command: :get})
20
20
  end
21
21
 
22
- add_option("-archive", "It moves all the files present in the remote folder to the archive subfolder.") do |options|
22
+ add_option('-archive', 'It moves all the files present in the remote folder to the archive subfolder.') do |options|
23
23
  options.deep_merge!(sftp: {command: :archive})
24
24
  end
25
25
 
26
- add_option("-local-folder", "Local folder to pull the remote files to.") do |options|
27
- local_folder = SCR.get_file("-local-folder", required: true, should_exist: true)
26
+ add_option('-local-folder', 'Local folder to pull the remote files to.') do |options|
27
+ local_folder = SCR.get_file('-local-folder', required: true, should_exist: true)
28
28
  options.deep_merge!(sftp: {local_folder: local_folder})
29
29
  end
30
30
 
31
- add_option("-remote-subfolder", "Remote sub folder to pull the remote files from.") do |options|
32
- remote_subfolder = SCR.get_arg("-remote-subfolder", with_param: true)
31
+ add_option('-remote-subfolder', 'Remote sub folder to pull the remote files from.') do |options|
32
+ remote_subfolder = SCR.get_arg('-remote-subfolder', with_param: true)
33
33
  options.deep_merge!(sftp: {remote_subfolder: remote_subfolder})
34
34
  end
35
35
 
36
- add_option("-remote-target-folder", "Overrides -remote-subfolder and -remote-folder.") do |options|
37
- remote_target_folder = SCR.get_arg("-remote-target-folder", with_param: true)
36
+ add_option('-remote-target-folder', 'Overrides -remote-subfolder and -remote-folder.') do |options|
37
+ remote_target_folder = SCR.get_arg('-remote-target-folder', with_param: true)
38
38
  options.deep_merge!(sftp: {remote_target_folder: remote_target_folder})
39
39
  end
40
40
 
41
- add_option("-remote-folder", "Overrides -remote-folder (but not -remote-subfolder).") do |options|
42
- remote_folder = SCR.get_arg("-remote-folder", with_param: true)
41
+ add_option('-remote-folder', 'Overrides -remote-folder (but not -remote-subfolder).') do |options|
42
+ remote_folder = SCR.get_arg('-remote-folder', with_param: true)
43
43
  options.deep_merge!(sftp: {remote_folder: remote_folder})
44
44
  end
45
45
  end
@@ -1,14 +1,14 @@
1
1
  class Eco::API::UseCases::Samples::Drivers::UrlPull
2
2
  class Cli < Eco::API::UseCases::Cli
3
- desc "Url Pull sample: pull the file from a specific URL"
3
+ desc 'Url Pull sample: pull the file from a specific URL'
4
4
 
5
- add_option("-target-url-const", "Constant that should be used as a pattern") do |options|
6
- url_const = SCR.get_arg("-target-url-const", with_param: true)
5
+ add_option('-target-url-const', 'Constant that should be used as a pattern') do |options|
6
+ url_const = SCR.get_arg('-target-url-const', with_param: true)
7
7
  options.deep_merge!(url_pull: {target_url_const: url_const})
8
8
  end
9
9
 
10
- add_option("-local-folder", "Local folder to pull the remote files to.") do |options|
11
- local_folder = SCR.get_file("-local-folder", required: true, should_exist: true)
10
+ add_option('-local-folder', 'Local folder to pull the remote files to.') do |options|
11
+ local_folder = SCR.get_file('-local-folder', required: true, should_exist: true)
12
12
  options.deep_merge!(url_pull: {local_folder: local_folder})
13
13
  end
14
14
  end
@@ -5,8 +5,8 @@ class Eco::API::UseCases::Samples::Drivers::Sftp < Eco::API::Common::Loaders::Us
5
5
  name 'sftp'
6
6
  type :other
7
7
 
8
- include Eco::API::UseCases::Lib::Sftp
9
- include Eco::API::UseCases::Lib::FilePattern
8
+ include Eco::API::UseCases::Lib::Files::Sftp
9
+ include Eco::API::UseCases::Lib::Files::FilePattern
10
10
 
11
11
  def main(session, options, _usecase)
12
12
  options[:end_get] = false
@@ -37,7 +37,9 @@ class Eco::API::UseCases::Samples::Drivers::Sftp < Eco::API::Common::Loaders::Us
37
37
 
38
38
  file_names = files.map {|file| to_remote_path(file.name)}
39
39
 
40
- puts "Getting the following files into the local folder '#{local_folder}':"
40
+ msg = "Getting the following files into the local folder "
41
+ msg << "'#{local_folder || '.'}':"
42
+ puts msg
41
43
  puts file_names
42
44
 
43
45
  sftp.download(file_names, local_folder: local_folder)
@@ -106,32 +106,32 @@ module Eco
106
106
 
107
107
  if dt
108
108
  @data = dt
109
- singleton_class.attr_reader(:data) unless respond_to?(:data)
109
+ singleton_class.attr_reader(:data) unless respond_to?(:data, true)
110
110
 
111
111
  case mdl
112
112
  when :people
113
113
  @people = dt
114
- singleton_class.attr_reader(:people) unless respond_to?(:people)
114
+ singleton_class.attr_reader(:people) unless respond_to?(:people, true)
115
115
  when :contractors
116
116
  @contractors = dt
117
- singleton_class.attr_reader(:contractors) unless respond_to?(:contractors)
117
+ singleton_class.attr_reader(:contractors) unless respond_to?(:contractors, true)
118
118
  end
119
119
  end
120
120
 
121
121
  if ent # entries/input
122
122
  @input = ent
123
- singleton_class.attr_reader(:input) unless respond_to?(:input)
123
+ singleton_class.attr_reader(:input) unless respond_to?(:input, true)
124
124
 
125
125
  # Below problematic code... usage has cases where entries = (gets assigned)
126
126
  # @entries = ent
127
- # singleton_class.attr_reader(:entries) unless respond_to?(:entries)
127
+ # singleton_class.attr_reader(:entries) unless respond_to?(:entries, true)
128
128
  end
129
129
 
130
130
  # `self` is the use case itself (when used the Loader)
131
131
  next unless is_a?(Eco::API::Common::Loaders::CaseBase)
132
132
 
133
133
  @usecase = use_case_self
134
- singleton_class.attr_reader(:usecase) unless respond_to?(:usecase)
134
+ singleton_class.attr_reader(:usecase) unless respond_to?(:usecase, true)
135
135
  end
136
136
 
137
137
  true
@@ -37,10 +37,10 @@ class Eco::API::UseCases::UseCaseChain
37
37
  msg << "Looks like a recursive cyclic chain 'use'"
38
38
  raise msg if @@num_chains >= MAX_CHAINS
39
39
 
40
- msg = "A UseCase can only be chained with another UseCase"
40
+ msg = 'A UseCase can only be chained with another UseCase'
41
41
  raise msg if usecase && !usecase.is_a?(UseCase)
42
42
 
43
- msg = "Missuse. Please use either parameter or block but not both"
43
+ msg = 'Missuse. Please use either parameter or block but not both'
44
44
  raise msg if block_given? && usecase
45
45
 
46
46
  usecase = block if block_given?
@@ -51,7 +51,7 @@ class Eco::API::UseCases::UseCaseChain
51
51
  protected
52
52
 
53
53
  def chain_to(usecase)
54
- msg = "A UseCase can only be chained with another UseCase"
54
+ msg = 'A UseCase can only be chained with another UseCase'
55
55
  raise msg if usecase && !usecase.is_a?(UseCase)
56
56
 
57
57
  usecase.chain(self)
@@ -60,7 +60,7 @@ class Eco::API::UseCases::UseCaseChain
60
60
  def resolved_chains(use_group = nil)
61
61
  return @resolved_chains if @resolved_chains
62
62
 
63
- msg = "Only Eco::API::UseCases object can contain resolved chains. "
63
+ msg = 'Only Eco::API::UseCases object can contain resolved chains. '
64
64
  msg << "Given: #{use_group.class}"
65
65
  raise msg if use_group && !use_group.is_a?(Eco::API::UseCases)
66
66
 
@@ -68,7 +68,7 @@ class Eco::API::UseCases::UseCaseChain
68
68
  @resolved_chains = @chains.map do |usecase|
69
69
  usecase = usecase.call(use_group) if usecase.respond_to?(:call)
70
70
 
71
- msg = "A UseCase can only be chained with another UseCase"
71
+ msg = 'A UseCase can only be chained with another UseCase'
72
72
  raise msg if usecase && !usecase.is_a?(UseCase)
73
73
 
74
74
  usecase.resolved_chains(use_group) if usecase.respond_to?(:resolved_chains)
@@ -81,7 +81,7 @@ class Eco::API::UseCases::UseCaseChain
81
81
  private
82
82
 
83
83
  def reset_chains!
84
- @chains = []
84
+ @chains = []
85
85
  @resolved_chains = nil
86
86
  end
87
87
  end
@@ -8,7 +8,7 @@ module Eco
8
8
 
9
9
  def initialize(name = nil, root:, type: nil, model: nil, usecase: nil, &block)
10
10
  if usecase
11
- msg = "Expected Eco::API::UseCases::UseCase. "
11
+ msg = 'Expected Eco::API::UseCases::UseCase. '
12
12
  msg << "Given #{usecase.class}"
13
13
  raise msg unless usecase.is_a?(Eco::API::UseCases::UseCase)
14
14
 
@@ -25,14 +25,14 @@ module Eco
25
25
  def root=(value)
26
26
  return super unless @resolved_chains # rubocop:disable Lint/ReturnInVoidContext
27
27
 
28
- msg = "You cannot change root Eco::API::UseCases "
29
- msg << "once the chains have been resolved"
28
+ msg = 'You cannot change root Eco::API::UseCases '
29
+ msg << 'once the chains have been resolved'
30
30
  raise msg
31
31
  end
32
32
 
33
33
  # @see Eco::API::UseCases::UseCase#launch
34
34
  def launch(io: nil, **kargs)
35
- super(io: io, **kargs).tap do |uio|
35
+ super.tap do |uio|
36
36
  next if resolved_chains.empty?
37
37
 
38
38
  resolved_chains.each do |usecase|
@@ -27,6 +27,7 @@ module Eco
27
27
  def new(usecase:, **kargs)
28
28
  default = { usecase: usecase }
29
29
  default.merge!(job: @job) if @job
30
+
30
31
  super(**default.merge(kargs))
31
32
  end
32
33
 
@@ -59,7 +60,7 @@ module Eco
59
60
  # @see Eco::API::UseCases::BaseIO#params
60
61
  # Same as its superclass but adding `usecase` and `job` parameters
61
62
  def params(keyed: false, all: false)
62
- super(keyed: keyed, all: all).tap do |res|
63
+ super.tap do |res|
63
64
  if keyed
64
65
  res.merge!(usecase: usecase)
65
66
  res.merge!(job: @job) if @job
@@ -4,17 +4,17 @@ module Eco
4
4
  class UseCases
5
5
  class UnknownCase < StandardError
6
6
  def initialize(msg = nil, case_name: nil, type: nil)
7
- msg ||= "Unknown case"
8
- msg += ". Case name '#{case_name}'" if case_name
9
- msg += ". Case type '#{type}'" if type
7
+ msg ||= 'Unknown case'
8
+ msg << ". Case name '#{case_name}'" if case_name
9
+ msg << ". Case type '#{type}'" if type
10
10
  super(msg)
11
11
  end
12
12
  end
13
13
 
14
14
  class AmbiguousCaseReference < StandardError
15
15
  def initialize(msg = nil, case_name: nil)
16
- msg ||= "You must specify type when there are multiple cases with same name"
17
- msg += ". Case name '#{case_name}'" if case_name
16
+ msg ||= 'You must specify type when there are multiple cases with same name'
17
+ msg << ". Case name '#{case_name}'" if case_name
18
18
  super(msg)
19
19
  end
20
20
  end
@@ -22,8 +22,8 @@ module Eco
22
22
  extend Eco::API::Common::ClassAutoLoader
23
23
  include Enumerable
24
24
 
25
- autoloads_children_of "Eco::API::Common::Loaders::UseCase"
26
- autoload_namespace_ignore "Eco::API"
25
+ autoloads_children_of 'Eco::API::Common::Loaders::UseCase'
26
+ autoload_namespace_ignore 'Eco::API'
27
27
 
28
28
  def initialize
29
29
  @usecases = {}
@@ -160,11 +160,11 @@ module Eco
160
160
  end
161
161
 
162
162
  def name(key)
163
- key.to_s.split(":").first
163
+ key.to_s.split(':').first
164
164
  end
165
165
 
166
166
  def type
167
- key.to_s.split(":").last&.to_sym
167
+ key.to_s.split(':').last&.to_sym
168
168
  end
169
169
  end
170
170
  end