eco-helpers 3.0.25 → 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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +39 -1
- data/eco-helpers.gemspec +1 -1
- data/lib/eco/api/common/loaders/base.rb +13 -1
- data/lib/eco/api/common/loaders/case_base.rb +1 -1
- data/lib/eco/api/common/loaders/error_handler.rb +1 -1
- data/lib/eco/api/common/loaders/parser.rb +2 -2
- data/lib/eco/api/common/loaders/policy.rb +1 -1
- data/lib/eco/api/common/loaders/use_case.rb +1 -1
- data/lib/eco/api/common/people/default_parsers/archived_parser.rb +19 -0
- data/lib/eco/api/common/people/default_parsers/boolean_parser.rb +4 -4
- data/lib/eco/api/common/people/default_parsers/date_parser.rb +3 -3
- data/lib/eco/api/common/people/default_parsers/freemium_parser.rb +6 -6
- data/lib/eco/api/common/people/default_parsers/login_providers_parser.rb +3 -3
- data/lib/eco/api/common/people/default_parsers/multi_parser.rb +4 -4
- data/lib/eco/api/common/people/default_parsers/policy_groups_parser.rb +9 -6
- data/lib/eco/api/common/people/default_parsers/send_invites_parser.rb +6 -5
- data/lib/eco/api/common/people/default_parsers/xls_parser.rb +2 -2
- data/lib/eco/api/common/people/default_parsers.rb +1 -0
- data/lib/eco/api/common/people/entries.rb +16 -15
- data/lib/eco/api/common/people/person_entry.rb +53 -37
- data/lib/eco/api/common/people/person_parser.rb +8 -6
- data/lib/eco/api/common/session/logger/channels.rb +1 -1
- data/lib/eco/api/common/session/logger.rb +2 -2
- data/lib/eco/api/common/session/mailer/aws_provider.rb +3 -2
- data/lib/eco/api/common/session/mailer/provider_base.rb +6 -2
- data/lib/eco/api/common/session/mailer/sendgrid_provider.rb +9 -9
- data/lib/eco/api/common/session/mailer.rb +8 -3
- data/lib/eco/api/common/session/sftp.rb +2 -2
- data/lib/eco/api/common/version_patches/object.rb +2 -1
- data/lib/eco/api/custom/mailer.rb +1 -1
- data/lib/eco/api/error/handlers.rb +3 -3
- data/lib/eco/api/error.rb +17 -17
- data/lib/eco/api/microcases/people/apply_changes/set_account/account_excluded.rb +3 -11
- data/lib/eco/api/microcases/people/apply_changes/set_core/core_excluded.rb +4 -1
- data/lib/eco/api/microcases/people/manage/search.rb +3 -1
- data/lib/eco/api/organization/people.rb +1 -0
- data/lib/eco/api/policies.rb +2 -2
- data/lib/eco/api/session/batch/job.rb +2 -2
- data/lib/eco/api/session/batch/launcher.rb +4 -5
- data/lib/eco/api/session/batch/searcher.rb +4 -4
- data/lib/eco/api/session/config/api.rb +2 -2
- data/lib/eco/api/session/config/apis/enviro_spaces.rb +3 -3
- data/lib/eco/api/session/config/apis/space_helpers.rb +4 -4
- data/lib/eco/api/session/config/apis.rb +1 -1
- data/lib/eco/api/session/config/post_launch.rb +7 -4
- data/lib/eco/api/session/config/sftp.rb +1 -1
- data/lib/eco/api/session/config/tagtree.rb +1 -1
- data/lib/eco/api/session/config/workflow.rb +4 -4
- data/lib/eco/api/session/config.rb +25 -24
- data/lib/eco/api/session.rb +4 -4
- data/lib/eco/api/usecases/base_io/validations.rb +4 -3
- data/lib/eco/api/usecases/cli/option.rb +5 -2
- data/lib/eco/api/usecases/default/people/amend/clear_abilities_case.rb +2 -2
- data/lib/eco/api/usecases/default/people/amend/restore_db_case.rb +16 -9
- data/lib/eco/api/usecases/default/people/treat/analyse_people_case.rb +20 -20
- data/lib/eco/api/usecases/default.rb +5 -5
- data/lib/eco/api/usecases/default_cases/to_csv_case.rb +8 -8
- data/lib/eco/api/usecases/default_cases/upsert_case.rb +4 -4
- data/lib/eco/api/usecases/graphql/helpers/base.rb +1 -1
- data/lib/eco/api/usecases/graphql/helpers/location/base/tree_tracking.rb +5 -1
- data/lib/eco/api/usecases/graphql/helpers/location/command/diffs/stages/commandable.rb +2 -1
- data/lib/eco/api/usecases/graphql/helpers/location/command/result.rb +3 -3
- data/lib/eco/api/usecases/graphql/helpers/location/command.rb +3 -0
- data/lib/eco/api/usecases/graphql/samples/location/command/dsl.rb +2 -2
- data/lib/eco/api/usecases/graphql/samples/location/command/service/tree_update.rb +9 -3
- data/lib/eco/api/usecases/graphql/samples/location/service/tree_diff/convertible/inputable.rb +5 -4
- data/lib/eco/api/usecases/graphql/samples/location/service/tree_diff/convertible/parsing.rb +5 -2
- data/lib/eco/api/usecases/graphql/samples/location/service/tree_diff.rb +3 -3
- data/lib/eco/api/usecases/graphql/utils/sftp.rb +1 -1
- data/lib/eco/api/usecases/lib/{file_pattern.rb → files/file_pattern.rb} +5 -1
- data/lib/eco/api/usecases/lib/{sftp.rb → files/sftp.rb} +27 -16
- data/lib/eco/api/usecases/lib/files.rb +7 -0
- data/lib/eco/api/usecases/lib.rb +1 -2
- data/lib/eco/api/usecases/ooze_cases/export_register_case.rb +5 -5
- data/lib/eco/api/usecases/ooze_samples/helpers/exportable_ooze.rb +14 -11
- data/lib/eco/api/usecases/ooze_samples/helpers_migration/copying.rb +14 -23
- data/lib/eco/api/usecases/ooze_samples/helpers_migration/typed_fields_pairing.rb +49 -27
- data/lib/eco/api/usecases/ooze_samples/ooze_base_case.rb +9 -9
- data/lib/eco/api/usecases/ooze_samples/ooze_run_base_case.rb +1 -1
- data/lib/eco/api/usecases/ooze_samples/register_export_case.rb +25 -17
- data/lib/eco/api/usecases/ooze_samples/register_migration_case.rb +41 -24
- data/lib/eco/api/usecases/ooze_samples/register_update_case.rb +16 -15
- data/lib/eco/api/usecases/samples/drivers/cli/sftp_cli.rb +15 -15
- data/lib/eco/api/usecases/samples/drivers/cli/url_pull_cli.rb +5 -5
- data/lib/eco/api/usecases/samples/drivers/sftp_sample.rb +2 -2
- data/lib/eco/api/usecases/use_case.rb +6 -6
- data/lib/eco/api/usecases/use_case_chain/chaining.rb +6 -6
- data/lib/eco/api/usecases/use_case_chain.rb +4 -4
- data/lib/eco/api/usecases/use_case_io.rb +2 -1
- data/lib/eco/api/usecases.rb +9 -9
- data/lib/eco/cli/config/options_set.rb +4 -4
- data/lib/eco/cli/config/use_cases.rb +3 -3
- data/lib/eco/cli/scripting/argument.rb +1 -1
- data/lib/eco/cli_default/input.rb +9 -9
- data/lib/eco/cli_default/options.rb +125 -100
- data/lib/eco/cli_default/people.rb +3 -3
- data/lib/eco/cli_default/usecases.rb +83 -83
- data/lib/eco/cli_default/workflow.rb +7 -7
- data/lib/eco/data/files/helpers.rb +3 -3
- data/lib/eco/data/fuzzy_match/result.rb +69 -26
- data/lib/eco/data/fuzzy_match/results.rb +10 -10
- data/lib/eco/data/fuzzy_match/score.rb +13 -8
- data/lib/eco/data/fuzzy_match.rb +65 -48
- data/lib/eco/data/locations/node_base/treeify.rb +13 -11
- data/lib/eco/data/mapper.rb +4 -4
- data/lib/eco/language/auxiliar_logger.rb +4 -4
- data/lib/eco/language/delegation/const_delegator.rb +64 -0
- data/lib/eco/language/delegation/const_lookup_hooks.rb +81 -0
- data/lib/eco/language/delegation/delegated_class.rb +84 -0
- data/lib/eco/language/delegation.rb +8 -0
- data/lib/eco/language/klass/when_inherited.rb +1 -0
- data/lib/eco/language/methods/delegate_missing.rb +1 -0
- data/lib/eco/language/models/class_helpers.rb +25 -23
- data/lib/eco/language/models/collection.rb +12 -2
- data/lib/eco/language.rb +1 -0
- data/lib/eco/version.rb +1 -1
- metadata +12 -6
@@ -15,7 +15,7 @@ class Eco::API::UseCases::OozeSamples::RegisterUpdateCase < Eco::API::UseCases::
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
name
|
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
|
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
|
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
|
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 =
|
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) || {})[
|
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??
|
201
|
+
default_answer = session.config.run_mode_remote?? 'Y' : 'N'
|
202
202
|
|
203
203
|
session.prompt_user(
|
204
|
-
|
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?(
|
210
|
-
puts
|
211
|
-
log(:info) {
|
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 <<
|
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
|
3
|
+
desc 'SFTP case: manages remote files that match a file pattern'
|
4
4
|
|
5
|
-
add_option(
|
6
|
-
pattern_const = SCR.get_arg(
|
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(
|
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(
|
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(
|
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(
|
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(
|
27
|
-
local_folder = SCR.get_file(
|
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(
|
32
|
-
remote_subfolder = SCR.get_arg(
|
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(
|
37
|
-
remote_target_folder = SCR.get_arg(
|
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(
|
42
|
-
remote_folder = SCR.get_arg(
|
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
|
3
|
+
desc 'Url Pull sample: pull the file from a specific URL'
|
4
4
|
|
5
|
-
add_option(
|
6
|
-
url_const = SCR.get_arg(
|
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(
|
11
|
-
local_folder = SCR.get_file(
|
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
|
@@ -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 =
|
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 =
|
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 =
|
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 =
|
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 =
|
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 =
|
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 =
|
29
|
-
msg <<
|
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
|
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
|
63
|
+
super.tap do |res|
|
63
64
|
if keyed
|
64
65
|
res.merge!(usecase: usecase)
|
65
66
|
res.merge!(job: @job) if @job
|
data/lib/eco/api/usecases.rb
CHANGED
@@ -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 ||=
|
8
|
-
msg
|
9
|
-
msg
|
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 ||=
|
17
|
-
msg
|
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
|
26
|
-
autoload_namespace_ignore
|
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(
|
163
|
+
key.to_s.split(':').first
|
164
164
|
end
|
165
165
|
|
166
166
|
def type
|
167
|
-
key.to_s.split(
|
167
|
+
key.to_s.split(':').last&.to_sym
|
168
168
|
end
|
169
169
|
end
|
170
170
|
end
|
@@ -17,16 +17,16 @@ module Eco
|
|
17
17
|
def help(refine: nil)
|
18
18
|
indent = 2
|
19
19
|
spaces = any_non_general_space_active? ? active_namespaces : namespaces
|
20
|
-
refinement = refine.is_a?(String)? " (containing: '#{refine}')" :
|
20
|
+
refinement = refine.is_a?(String)? " (containing: '#{refine}')" : ''
|
21
21
|
|
22
22
|
["The following are the available options#{refinement}:"].then do |lines|
|
23
23
|
max_len = keys_max_len(options_args(spaces)) + indent
|
24
24
|
|
25
25
|
spaces.each do |namespace|
|
26
26
|
is_general = (namespace == :general)
|
27
|
-
str_indent = is_general ?
|
27
|
+
str_indent = is_general ? '' : ' ' * indent
|
28
28
|
|
29
|
-
lines << help_line(namespace,
|
29
|
+
lines << help_line(namespace, '', max_len) unless is_general
|
30
30
|
|
31
31
|
options_set(namespace).select do |_arg, option| # rubocop:disable Style/HashEachMethods
|
32
32
|
!refine.is_a?(String) || option.name.include?(refine)
|
@@ -63,7 +63,7 @@ module Eco
|
|
63
63
|
# @param namespace [String] preceding command(s) argument that enables this option.
|
64
64
|
# @param desc [String] description of the option.
|
65
65
|
def add(option, desc = nil, namespace: :general, &block)
|
66
|
-
raise
|
66
|
+
raise 'Missing block to define the options builder' unless block_given?
|
67
67
|
|
68
68
|
opts = [option].flatten.compact
|
69
69
|
return self if opts.empty?
|
@@ -27,7 +27,7 @@ module Eco
|
|
27
27
|
|
28
28
|
# @return [String] summary of the use cases.
|
29
29
|
def help(refine: nil)
|
30
|
-
refinement = refine.is_a?(String)? " (containing: '#{refine}')" :
|
30
|
+
refinement = refine.is_a?(String)? " (containing: '#{refine}')" : ''
|
31
31
|
|
32
32
|
["The following are the available use cases#{refinement}:"].then do |lines|
|
33
33
|
max_len = keys_max_len(@linked_cases.keys)
|
@@ -103,7 +103,7 @@ module Eco
|
|
103
103
|
processed = false
|
104
104
|
|
105
105
|
active(io: io).each do |usecase, data|
|
106
|
-
raise
|
106
|
+
raise 'Something went wrong when scoping active cases' unless data
|
107
107
|
|
108
108
|
processed = true
|
109
109
|
io = case_io(io: io, usecase: usecase)
|
@@ -154,7 +154,7 @@ module Eco
|
|
154
154
|
def validate_io!(io)
|
155
155
|
return if io.is_a?(Eco::API::UseCases::BaseIO)
|
156
156
|
|
157
|
-
msg =
|
157
|
+
msg = 'You need to provide Eco::API::UseCases::BaseIO object. '
|
158
158
|
msg << "Given: #{io.class}"
|
159
159
|
raise ArgumentError, msg
|
160
160
|
end
|
@@ -1,20 +1,20 @@
|
|
1
1
|
class Eco::CliDefault::Input < Eco::API::Common::Loaders::CliConfig
|
2
2
|
FORMATS = {
|
3
3
|
csv: {
|
4
|
-
option: [
|
5
|
-
extname: [
|
4
|
+
option: ['-csv'],
|
5
|
+
extname: ['.csv', '.txt']
|
6
6
|
},
|
7
7
|
xml: {
|
8
|
-
option: [
|
9
|
-
extname: [
|
8
|
+
option: ['-xml'],
|
9
|
+
extname: ['.xml']
|
10
10
|
},
|
11
11
|
xls: {
|
12
|
-
option: [
|
13
|
-
extname: [
|
12
|
+
option: ['-xls', '-xlsx', '-excel'],
|
13
|
+
extname: ['.xls', '.xlsx', '.xlsm']
|
14
14
|
},
|
15
15
|
json: {
|
16
|
-
option: [
|
17
|
-
extname: [
|
16
|
+
option: ['-json'],
|
17
|
+
extname: ['.json']
|
18
18
|
}
|
19
19
|
}.freeze
|
20
20
|
|
@@ -45,7 +45,7 @@ class Eco::CliDefault::Input < Eco::API::Common::Loaders::CliConfig
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
|
-
input(default_option:
|
48
|
+
input(default_option: '-entries-from') do |session, str_opt, options|
|
49
49
|
@options = options
|
50
50
|
@session = session
|
51
51
|
input = []
|