eco-helpers 3.0.37 → 3.1.1

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 (126) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -0
  3. data/CHANGELOG.md +116 -1
  4. data/lib/eco/api/common/loaders/base.rb +2 -2
  5. data/lib/eco/api/common/loaders/case_base.rb +2 -0
  6. data/lib/eco/api/common/loaders/config/block.rb +78 -0
  7. data/lib/eco/api/common/loaders/config/workflow/mailer.rb +39 -7
  8. data/lib/eco/api/common/loaders/config.rb +3 -26
  9. data/lib/eco/api/common/loaders/error_handler.rb +2 -0
  10. data/lib/eco/api/common/loaders/parser.rb +1 -4
  11. data/lib/eco/api/common/people/entries.rb +23 -6
  12. data/lib/eco/api/common/people/entry_factory.rb +1 -1
  13. data/lib/eco/api/common/people/person_entry.rb +104 -27
  14. data/lib/eco/api/common/people/person_parser.rb +50 -16
  15. data/lib/eco/api/common/people/supervisor_helpers.rb +12 -6
  16. data/lib/eco/api/common/session/base_session.rb +75 -81
  17. data/lib/eco/api/common/session/environment.rb +49 -55
  18. data/lib/eco/api/common/session/file_manager.rb +132 -135
  19. data/lib/eco/api/common/session/helpers/prompt_user.rb +23 -30
  20. data/lib/eco/api/common/session/helpers.rb +10 -15
  21. data/lib/eco/api/common/session/logger/cache.rb +89 -96
  22. data/lib/eco/api/common/session/logger/channels.rb +24 -32
  23. data/lib/eco/api/common/session/logger/log.rb +38 -46
  24. data/lib/eco/api/common/session/logger.rb +50 -54
  25. data/lib/eco/api/common/session/mailer/aws_provider.rb +63 -71
  26. data/lib/eco/api/common/session/mailer/provider_base.rb +43 -48
  27. data/lib/eco/api/common/session/mailer/sendgrid_provider.rb +101 -109
  28. data/lib/eco/api/common/session/mailer.rb +78 -83
  29. data/lib/eco/api/common/session/s3_uploader.rb +132 -138
  30. data/lib/eco/api/common/session/sftp.rb +202 -208
  31. data/lib/eco/api/common.rb +0 -3
  32. data/lib/eco/api/custom/mailer.rb +4 -2
  33. data/lib/eco/api/error/handlers.rb +1 -1
  34. data/lib/eco/api/microcases/people/apply_changes/set_core/core_excluded.rb +8 -2
  35. data/lib/eco/api/microcases/people/manage/search.rb +1 -1
  36. data/lib/eco/api/organization/people/similarity.rb +3 -3
  37. data/lib/eco/api/session/batch/base_policy.rb +42 -27
  38. data/lib/eco/api/session/batch/launcher/mode_size.rb +6 -1
  39. data/lib/eco/api/session/batch/launcher.rb +16 -3
  40. data/lib/eco/api/session/config/api.rb +4 -3
  41. data/lib/eco/api/session/config/apis/one_off.rb +1 -1
  42. data/lib/eco/api/session/config/files.rb +13 -12
  43. data/lib/eco/api/session/config/workflow.rb +1 -373
  44. data/lib/eco/api/session/config.rb +30 -9
  45. data/lib/eco/api/usecases/base_case/model.rb +6 -6
  46. data/lib/eco/api/usecases/base_case.rb +1 -1
  47. data/lib/eco/api/usecases/cli.rb +1 -1
  48. data/lib/eco/api/usecases/default/locations/tagtree_extract_case.rb +8 -9
  49. data/lib/eco/api/usecases/default_cases/to_csv_case.rb +4 -1
  50. data/lib/eco/api/usecases/graphql/samples/location/command/dsl.rb +2 -2
  51. data/lib/eco/api/usecases/lib/base/env.rb +21 -23
  52. data/lib/eco/api/usecases/lib/files/file_pattern.rb +41 -14
  53. data/lib/eco/api/usecases/lib/files/input_file.rb +110 -0
  54. data/lib/eco/api/usecases/lib/files/sftp.rb +5 -2
  55. data/lib/eco/api/usecases/lib/files.rb +1 -0
  56. data/lib/eco/api/usecases/lib/locations/base.rb +23 -0
  57. data/lib/eco/api/usecases/lib/locations/mapping.rb +94 -0
  58. data/lib/eco/api/usecases/lib/locations.rb +7 -0
  59. data/lib/eco/api/usecases/lib/people/base.rb +20 -0
  60. data/lib/eco/api/usecases/lib/people.rb +6 -0
  61. data/lib/eco/api/usecases/lib.rb +2 -0
  62. data/lib/eco/api/usecases/ooze_cases.rb +1 -1
  63. data/lib/eco/api/usecases/ooze_samples/register_export_case.rb +1 -0
  64. data/lib/eco/api/usecases/ooze_samples/register_update_case.rb +1 -0
  65. data/lib/eco/api/usecases/samples/drivers/sftp_sample.rb +2 -0
  66. data/lib/eco/api/usecases/samples/drivers/url_pull_sample.rb +8 -2
  67. data/lib/eco/api/usecases/service/sftp/with_target_config.rb +0 -33
  68. data/lib/eco/api/usecases/service/sftp.rb +7 -1
  69. data/lib/eco/api/usecases/use_case.rb +3 -2
  70. data/lib/eco/api/usecases/workflow.rb +5 -0
  71. data/lib/eco/api/usecases.rb +12 -5
  72. data/lib/eco/cli/scripting/args_helpers.rb +1 -9
  73. data/lib/eco/cli_default/options.rb +98 -68
  74. data/lib/eco/cli_default/workflow/end.rb +22 -0
  75. data/lib/eco/cli_default/workflow/launch_jobs.rb +14 -0
  76. data/lib/eco/cli_default/workflow/load/data.rb +27 -0
  77. data/lib/eco/cli_default/workflow/load/input.rb +28 -0
  78. data/lib/eco/cli_default/workflow/load.rb +13 -0
  79. data/lib/eco/cli_default/workflow/options.rb +10 -0
  80. data/lib/eco/cli_default/workflow/post_launch.rb +65 -0
  81. data/lib/eco/cli_default/workflow/report.rb +17 -0
  82. data/lib/eco/cli_default/workflow/rescued_exception.rb +21 -0
  83. data/lib/eco/cli_default/workflow/usecases.rb +23 -0
  84. data/lib/eco/cli_default/workflow.rb +24 -180
  85. data/lib/eco/data/count_trace.rb +51 -0
  86. data/lib/eco/data/files/content.rb +39 -0
  87. data/lib/eco/data/files/directory.rb +78 -45
  88. data/lib/eco/data/files/encoding.rb +12 -21
  89. data/lib/eco/data/files/file_pattern.rb +15 -8
  90. data/lib/eco/data/files/folder.rb +196 -0
  91. data/lib/eco/data/files/relative_path.rb +54 -0
  92. data/lib/eco/data/files/timestamp.rb +18 -0
  93. data/lib/eco/data/files.rb +46 -5
  94. data/lib/eco/data/fuzzy_match.rb +1 -1
  95. data/lib/eco/data/hashes/array_diff.rb +11 -5
  96. data/lib/eco/data/hashes/diff_result/meta.rb +12 -4
  97. data/lib/eco/data/locations/node_diff/accessors.rb +1 -1
  98. data/lib/eco/data/mapper.rb +5 -1
  99. data/lib/eco/data.rb +1 -0
  100. data/lib/eco/language/delegation/delegating_missing.rb +1 -1
  101. data/lib/eco/language/delegation/delegating_missing_const.rb +1 -1
  102. data/lib/eco/language/delegation/delegating_missing_on_class.rb +1 -1
  103. data/lib/eco/language/delegation/for_delegator/delegated_class.rb +1 -1
  104. data/lib/eco/language/klass/auto_loader.rb +129 -0
  105. data/lib/eco/language/klass/builder.rb +6 -6
  106. data/lib/eco/language/klass/const.rb +19 -0
  107. data/lib/eco/language/klass/helpers_built.rb +3 -1
  108. data/lib/eco/language/klass/hierarchy.rb +5 -1
  109. data/lib/eco/language/klass/naming.rb +5 -2
  110. data/lib/eco/language/klass/resolver.rb +21 -6
  111. data/lib/eco/language/klass/uid.rb +12 -0
  112. data/lib/eco/language/klass/when_inherited.rb +30 -6
  113. data/lib/eco/language/klass.rb +5 -2
  114. data/lib/eco/language/methods/access_modifier.rb +23 -0
  115. data/lib/eco/language/methods/instance_method_helpers.rb +6 -1
  116. data/lib/eco/language/methods.rb +1 -0
  117. data/lib/eco/language/models/hierarchy.rb +41 -0
  118. data/lib/eco/language/models/workflow.rb +385 -0
  119. data/lib/eco/language/models.rb +2 -1
  120. data/lib/eco/version.rb +1 -1
  121. metadata +31 -7
  122. data/lib/eco/api/common/class_auto_loader.rb +0 -114
  123. data/lib/eco/api/common/class_helpers.rb +0 -9
  124. data/lib/eco/api/common/class_hierarchy.rb +0 -45
  125. data/lib/eco/data/files/helpers.rb +0 -152
  126. data/lib/eco/language/models/class_helpers.rb +0 -136
@@ -1,213 +1,207 @@
1
- module Eco
2
- module API
3
- module Common
4
- module Session
5
- class SFTP
6
- include Eco::Language::AuxiliarLogger
7
-
8
- def initialize(enviro:)
9
- invalid_env = enviro && !enviro.is_a?(Eco::API::Common::Session::Environment)
10
- raise "Required Environment object (enviro:). Given: #{enviro}" if invalid_env
11
-
12
- @enviro = enviro
13
- end
14
-
15
- def host
16
- @host ||= fetch_host
17
- end
18
-
19
- # @see Net::SFTP::Session
20
- def sftp_session
21
- require "net/sftp"
22
-
23
- @sftp_session ||= Net::SFTP.start(
24
- host,
25
- fetch_user,
26
- **session_options
27
- )
28
- rescue StandardError => err
29
- log(:error) {
30
- "Could not open SFTP session. Possible misconfiguration: #{err}"
31
- }
32
- raise
33
- end
34
-
35
- # @see Net::SFTP::Operations::Dir#entries
36
- def entries(path)
37
- sftp_session.dir.entries(path).sort_by(&:name)
38
- end
39
-
40
- # **Files** of the remote directory.
41
- # @see Net::SFTP::Operations::Dir#entries
42
- # @param path [String] remote directory `path`
43
- # @param pattern [Regexp] if given, filters by using this pattern
44
- # @return [Array<Net::SFTP::Protocol::V01::Name>]
45
- def files(path, pattern: nil)
46
- entries = entries(path).select(&:file?)
47
- return entries unless pattern
48
-
49
- entries.select {|remote_file| remote_file.name =~ pattern}
50
- end
51
-
52
- # **Folders** of the remote directory.
53
- # @see Net::SFTP::Operations::Dir#entries
54
- # @param path [String] remote directory `path`
55
- # @param pattern [Regexp] if given, filters by using this pattern
56
- # @return [Array<Net::SFTP::Protocol::V01::Name>]
57
- def folders(path, pattern: nil)
58
- entries = entries(path).select(&:directory?)
59
- return entries unless pattern
60
-
61
- entries.select {|remote_file| remote_file.name =~ pattern}
62
- end
63
-
64
- # @see Net::SFTP::Session#rename
65
- def move(fullname_source, fullname_dest, flags = 0x0001, override: true, &callback)
66
- sftp_session.rename!(fullname_source, fullname_dest, flags, &callback)
67
-
68
- true
69
- rescue Net::SFTP::StatusException => err
70
- case err.code
71
- when Net::SFTP::Constants::StatusCodes::FX_FILE_ALREADY_EXISTS
72
- log(:waning) {
73
- msg = "Remote file '#{fullname_dest}' already exists."
74
- msg << "Overriding..." if override
75
- }
76
-
77
- if override
78
- sftp_session.remove(fullname_dest)
79
- # sftp_session.rename!(fullname_source, fullname_dest, flags, &callback)
80
- move(fullname_source, fullname_dest, flags, override: false, &callback)
81
- end
82
- when Net::SFTP::Constants::StatusCodes::FX_PERMISSION_DENIED, Net::SFTP::Constants::StatusCodes::FX_WRITE_PROTECT
83
- log(:error) {
84
- "Not allowed to rename '#{fullname_source}' to '#{fullname_dest}'"
85
- }
86
- when Net::SFTP::Constants::StatusCodes::FX_NO_SUCH_FILE
87
- log(:error) { "Remote file '#{fullname_source}' does not exist"}
88
- when Net::SFTP::Constants::StatusCodes::FX_NO_SUCH_PATH
89
- log(:error) { err }
90
- else
91
- msg = "Error when trying to move file '#{fullname_source}' to '#{fullname_dest}'"
92
- log(:error) { "#{msg}\n#{err}" }
93
- # raise err, msg, err.backtrace
94
- end
95
-
96
- false
97
- end
98
-
99
- # Downloads the files specified to a local folder
100
- # @see Net::SFTP::Operations::Download
101
- # @param files [String, Array<String>] full path to remote file(s) to be downloaded
102
- # @param local_folder [String] local destination folder (`"."` if not specified)
103
- # @return [Array<String>] list of created files
104
- def download(files, local_folder: nil, &block)
105
- puts 'Creating local files:'
106
- created_files = []
107
-
108
- [files].flatten.compact.map do |fullname|
109
- basename = windows_basename(fullname)
110
- dest_fullname = File.join(local_folder || '.', basename)
111
- puts " * #{dest_fullname}"
112
- created_files << dest_fullname
113
- sftp_session.download(fullname, dest_fullname)
114
- end.each(&:wait)
115
-
116
- # run SSH event loop while dw.active?
117
- created_files.tap { created_files.each(&block) }
118
- end
119
-
120
- # Upload a file to the specific `remote_folder`
121
- # @return [String, FalseClass] on success returns the remote file path.
122
- def upload(local_file, remote_folder:, gid: nil)
123
- return false unless local_file && File.exist?(local_file)
124
-
125
- dest_file = "#{remote_folder}/#{File.basename(local_file)}"
126
- res = sftp_session.upload!(local_file, dest_file)
127
-
128
- unless gid.nil?
129
- attrs = sftp_session.stat!(dest_file)
130
- unless gid == attrs.gid
131
- flags = {permissions: 0o660, uid: attrs.uid, gid: gid}
132
- _stat_res = sftp_session.setstat!(dest_file, flags)
133
- end
134
- end
135
-
136
- log(:info) {
137
- "Uploaded '#{local_file}' as '#{dest_file}' (#{res})"
138
- }
139
-
140
- dest_file
141
- rescue StandardError
142
- log(:error) {
143
- "Could not upload file '#{dest_file}' (#{res})"
144
- }
145
- raise
146
- end
147
-
148
- private
149
-
150
- def session_options
151
- {
152
- non_interactive: true
153
- }.tap do |opts|
154
- if password?
155
- opts.merge!({password: fetch_password})
156
- else
157
- opts.merge!({
158
- keys: fetch_key_files,
159
- keys_only: true
160
- })
161
- end
162
- end
163
- end
164
-
165
- def windows_basename(remote_fullname)
166
- dir_sep = /[\\\/]/
167
- patr_re = /[<>:\\\/|?*]/
168
-
169
- parts = remote_fullname.split(dir_sep).map do |node|
170
- node.gsub(patr_re, '_')
171
- end
172
-
173
- local_fullname = File.join(*parts)
174
- File.basename(local_fullname)
175
- end
176
-
177
- def logger
178
- @enviro&.logger ||
179
- (defined?(super)? super : ::Logger.new(IO::NULL))
180
- end
181
-
182
- def config
183
- @enviro.config || {}
184
- end
185
-
186
- def fetch_host
187
- config.sftp.host || ENV['SFTP_HOST']
188
- end
189
-
190
- def fetch_user
191
- config.sftp.user || ENV['SFTP_USERNAME']
192
- end
193
-
194
- def password?
195
- !!fetch_password
196
- end
197
-
198
- def fetch_password
199
- config.sftp.password || ENV['SFTP_PASSWORD']
200
- end
201
-
202
- def fetch_key_files
203
- [config.sftp.key_file || ENV['SFTP_KEY_FILE']]
204
- end
205
-
206
- def fetch_base_path
207
- config.sftp.base_path || ENV['SFTP_BASE_PATH']
208
- end
1
+ module Eco::API::Common::Session
2
+ class SFTP
3
+ include Eco::Language::AuxiliarLogger
4
+
5
+ def initialize(enviro:)
6
+ invalid_env = enviro && !enviro.is_a?(Eco::API::Common::Session::Environment)
7
+ raise "Required Environment object (enviro:). Given: #{enviro}" if invalid_env
8
+
9
+ @enviro = enviro
10
+ end
11
+
12
+ def host
13
+ @host ||= fetch_host
14
+ end
15
+
16
+ # @see Net::SFTP::Session
17
+ def sftp_session
18
+ require "net/sftp"
19
+
20
+ @sftp_session ||= Net::SFTP.start(
21
+ host,
22
+ fetch_user,
23
+ **session_options
24
+ )
25
+ rescue StandardError => err
26
+ log(:error) {
27
+ "Could not open SFTP session. Possible misconfiguration: #{err}"
28
+ }
29
+ raise
30
+ end
31
+
32
+ # @see Net::SFTP::Operations::Dir#entries
33
+ def entries(path)
34
+ sftp_session.dir.entries(path).sort_by(&:name)
35
+ end
36
+
37
+ # **Files** of the remote directory.
38
+ # @see Net::SFTP::Operations::Dir#entries
39
+ # @param path [String] remote directory `path`
40
+ # @param pattern [Regexp] if given, filters by using this pattern
41
+ # @return [Array<Net::SFTP::Protocol::V01::Name>]
42
+ def files(path, pattern: nil)
43
+ entries = entries(path).select(&:file?)
44
+ return entries unless pattern
45
+
46
+ entries.select {|remote_file| remote_file.name =~ pattern}
47
+ end
48
+
49
+ # **Folders** of the remote directory.
50
+ # @see Net::SFTP::Operations::Dir#entries
51
+ # @param path [String] remote directory `path`
52
+ # @param pattern [Regexp] if given, filters by using this pattern
53
+ # @return [Array<Net::SFTP::Protocol::V01::Name>]
54
+ def folders(path, pattern: nil)
55
+ entries = entries(path).select(&:directory?)
56
+ return entries unless pattern
57
+
58
+ entries.select {|remote_file| remote_file.name =~ pattern}
59
+ end
60
+
61
+ # @see Net::SFTP::Session#rename
62
+ def move(fullname_source, fullname_dest, flags = 0x0001, override: true, &callback)
63
+ sftp_session.rename!(fullname_source, fullname_dest, flags, &callback)
64
+
65
+ true
66
+ rescue Net::SFTP::StatusException => err
67
+ case err.code
68
+ when Net::SFTP::Constants::StatusCodes::FX_FILE_ALREADY_EXISTS
69
+ log(:waning) {
70
+ msg = "Remote file '#{fullname_dest}' already exists."
71
+ msg << "Overriding..." if override
72
+ }
73
+
74
+ if override
75
+ sftp_session.remove(fullname_dest)
76
+ # sftp_session.rename!(fullname_source, fullname_dest, flags, &callback)
77
+ move(fullname_source, fullname_dest, flags, override: false, &callback)
78
+ end
79
+ when Net::SFTP::Constants::StatusCodes::FX_PERMISSION_DENIED, Net::SFTP::Constants::StatusCodes::FX_WRITE_PROTECT
80
+ log(:error) {
81
+ "Not allowed to rename '#{fullname_source}' to '#{fullname_dest}'"
82
+ }
83
+ when Net::SFTP::Constants::StatusCodes::FX_NO_SUCH_FILE
84
+ log(:error) { "Remote file '#{fullname_source}' does not exist"}
85
+ when Net::SFTP::Constants::StatusCodes::FX_NO_SUCH_PATH
86
+ log(:error) { err }
87
+ else
88
+ msg = "Error when trying to move file '#{fullname_source}' to '#{fullname_dest}'"
89
+ log(:error) { "#{msg}\n#{err}" }
90
+ # raise err, msg, err.backtrace
91
+ end
92
+
93
+ false
94
+ end
95
+
96
+ # Downloads the files specified to a local folder
97
+ # @see Net::SFTP::Operations::Download
98
+ # @param files [String, Array<String>] full path to remote file(s) to be downloaded
99
+ # @param local_folder [String] local destination folder (`"."` if not specified)
100
+ # @return [Array<String>] list of created files
101
+ def download(files, local_folder: nil, &block)
102
+ puts 'Creating local files:'
103
+ created_files = []
104
+
105
+ [files].flatten.compact.map do |fullname|
106
+ basename = windows_basename(fullname)
107
+ dest_fullname = File.join(local_folder || '.', basename)
108
+ puts " * #{dest_fullname}"
109
+ created_files << dest_fullname
110
+ sftp_session.download(fullname, dest_fullname)
111
+ end.each(&:wait)
112
+
113
+ # run SSH event loop while dw.active?
114
+ created_files.tap { created_files.each(&block) }
115
+ end
116
+
117
+ # Upload a file to the specific `remote_folder`
118
+ # @return [String, FalseClass] on success returns the remote file path.
119
+ def upload(local_file, remote_folder:, gid: nil)
120
+ return false unless local_file && File.exist?(local_file)
121
+
122
+ dest_file = "#{remote_folder}/#{File.basename(local_file)}"
123
+ res = sftp_session.upload!(local_file, dest_file)
124
+
125
+ unless gid.nil?
126
+ attrs = sftp_session.stat!(dest_file)
127
+ unless gid == attrs.gid
128
+ flags = {permissions: 0o660, uid: attrs.uid, gid: gid}
129
+ _stat_res = sftp_session.setstat!(dest_file, flags)
130
+ end
131
+ end
132
+
133
+ log(:info) {
134
+ "Uploaded '#{local_file}' as '#{dest_file}' (#{res})"
135
+ }
136
+
137
+ dest_file
138
+ rescue StandardError
139
+ log(:error) {
140
+ "Could not upload file '#{dest_file}' (#{res})"
141
+ }
142
+ raise
143
+ end
144
+
145
+ private
146
+
147
+ def session_options
148
+ {
149
+ non_interactive: true
150
+ }.tap do |opts|
151
+ if password?
152
+ opts.merge!({password: fetch_password})
153
+ else
154
+ opts.merge!({
155
+ keys: fetch_key_files,
156
+ keys_only: true
157
+ })
209
158
  end
210
159
  end
211
160
  end
161
+
162
+ def windows_basename(remote_fullname)
163
+ dir_sep = /[\\\/]/
164
+ patr_re = /[<>:\\\/|?*]/
165
+
166
+ parts = remote_fullname.split(dir_sep).map do |node|
167
+ node.gsub(patr_re, '_')
168
+ end
169
+
170
+ local_fullname = File.join(*parts)
171
+ File.basename(local_fullname)
172
+ end
173
+
174
+ def logger
175
+ @enviro&.logger ||
176
+ (defined?(super)? super : ::Logger.new(IO::NULL))
177
+ end
178
+
179
+ def config
180
+ @enviro.config || {}
181
+ end
182
+
183
+ def fetch_host
184
+ config.sftp.host || ENV['SFTP_HOST']
185
+ end
186
+
187
+ def fetch_user
188
+ config.sftp.user || ENV['SFTP_USERNAME']
189
+ end
190
+
191
+ def password?
192
+ !!fetch_password
193
+ end
194
+
195
+ def fetch_password
196
+ config.sftp.password || ENV['SFTP_PASSWORD']
197
+ end
198
+
199
+ def fetch_key_files
200
+ [config.sftp.key_file || ENV['SFTP_KEY_FILE']]
201
+ end
202
+
203
+ def fetch_base_path
204
+ config.sftp.base_path || ENV['SFTP_BASE_PATH']
205
+ end
212
206
  end
213
207
  end
@@ -6,9 +6,6 @@ module Eco
6
6
  end
7
7
 
8
8
  require_relative 'common/version_patches'
9
- require_relative 'common/class_helpers'
10
- require_relative 'common/class_auto_loader'
11
- require_relative 'common/class_hierarchy'
12
9
  require_relative 'common/class_meta_basics'
13
10
  require_relative 'common/loaders'
14
11
  require_relative 'common/session'
@@ -4,7 +4,9 @@
4
4
  # ORG = 'Org Name'
5
5
  # end
6
6
  class Eco::API::Custom::Mailer < Eco::API::Common::Loaders::Workflow::Mailer
7
- extend Eco::Language::Klass::WhenInherited
7
+ include Eco::Language::Klass::WhenInherited
8
8
 
9
- when_inherited(&config_block)
9
+ when_inherited do |subclass|
10
+ config_apply!(on: subclass, all: true)
11
+ end
10
12
  end
@@ -10,7 +10,7 @@ module Eco
10
10
  end
11
11
 
12
12
  # @param klass_err [Eco::API::Error] the specific error class that triggers this handler.
13
- def on(klass_err, type: :error_handler, retry: true, &block)
13
+ def on(klass_err, type: :error_handler, &block)
14
14
  Eco::API::Error.validate_err_class(klass_err)
15
15
  raise 'Expected block but not given' unless block
16
16
 
@@ -5,8 +5,14 @@ module Eco
5
5
  module ApplyChanges
6
6
  module SetCore
7
7
  module CoreExcluded
8
- CAN_EXCLUDE_CREATION = %w[filter_tags archived contractor_organization_id].freeze
9
- CAN_EXCLUDE_UPDATE = %w[name external_id email filter_tags contractor_organization_id].freeze
8
+ CAN_EXCLUDE_CREATION = %w[
9
+ filter_tags archived
10
+ contractor_organization_id
11
+ ].freeze
12
+ CAN_EXCLUDE_UPDATE = %w[
13
+ name external_id email
14
+ filter_tags contractor_organization_id
15
+ ].freeze
10
16
 
11
17
  # @note by default `supervisor_id` is always excluded.
12
18
  # @param person [Ecoportal::API::V1::Person] the person we want to update, carrying the changes to be done.
@@ -22,7 +22,7 @@ module Eco
22
22
  people = session.batch.search(data, silent: silent).then do |status|
23
23
  secs = (Time.now - start).round(3)
24
24
 
25
- Eco::API::Organization::People.new(status.people).tap do |people| # rubocop:disable Lint/ShadowingOuterLocalVariable
25
+ Eco::API::Organization::People.new(status.people).tap do |people|
26
26
  cnt = people.count
27
27
  per_sec = (cnt.to_f / secs).round(2)
28
28
 
@@ -47,7 +47,7 @@ module Eco
47
47
  # Generates a new object with same config but different base `data`.
48
48
  # @return [Eco::API::Organization::People::Similarity]
49
49
  def newFrom(data) # rubocop:disable Naming/MethodName
50
- super(data).tap do |simil|
50
+ super.tap do |simil|
51
51
  simil.threshold = threshold
52
52
  simil.order = order
53
53
  simil.attribute = attribute
@@ -186,7 +186,7 @@ module Eco
186
186
  # Launches a reanalyis on `analysed` based on `options`
187
187
  # @param analysed [Hash] where the _keys_ are the people `id`s and the _values_ the `Eco::Data::FuzzyMatch::Results`
188
188
  def rearrange(analysed, **options)
189
- with_analysed(analysed) do |person, results|
189
+ with_analysed(analysed) do |_person, results|
190
190
  results.relevant_results(**options)
191
191
  end
192
192
  end
@@ -219,7 +219,7 @@ module Eco
219
219
  total = analysed.count
220
220
  i = 1
221
221
 
222
- with_analysed(analysed) do |person, results|
222
+ with_analysed(analysed) do |_person, results|
223
223
  print_progress('Reanalysing by ignoring matching words', total, i)
224
224
  i += 1
225
225
  ignore_same_words_score(results, **options)