decouplio 1.0.0alpha4 → 1.0.0alpha8

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 (33) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +6 -11
  3. data/.ruby-version +1 -1
  4. data/decouplio.gemspec +1 -1
  5. data/lib/decouplio/action.rb +16 -42
  6. data/lib/decouplio/action_state_printer.rb +37 -0
  7. data/lib/decouplio/composer.rb +3 -76
  8. data/lib/decouplio/const/{doby_aide_options.rb → step_options.rb} +2 -1
  9. data/lib/decouplio/const/types.rb +7 -27
  10. data/lib/decouplio/default_meta_store.rb +39 -0
  11. data/lib/decouplio/logic_dsl.rb +53 -35
  12. data/lib/decouplio/options_validator.rb +1 -110
  13. data/lib/decouplio/steps/inner_action_fail.rb +5 -3
  14. data/lib/decouplio/steps/inner_action_pass.rb +7 -5
  15. data/lib/decouplio/steps/inner_action_step.rb +5 -3
  16. data/lib/decouplio/steps/service_fail.rb +4 -2
  17. data/lib/decouplio/steps/service_pass.rb +4 -2
  18. data/lib/decouplio/steps/service_step.rb +4 -2
  19. data/lib/decouplio/validators/condition.rb +0 -10
  20. data/lib/decouplio/version.rb +1 -1
  21. metadata +8 -18
  22. data/lib/decouplio/const/validations/aide.rb +0 -38
  23. data/lib/decouplio/const/validations/doby.rb +0 -36
  24. data/lib/decouplio/default_error_handler.rb +0 -24
  25. data/lib/decouplio/errors/aide_can_not_be_first_step_error.rb +0 -18
  26. data/lib/decouplio/errors/aide_controversial_keys_error.rb +0 -26
  27. data/lib/decouplio/errors/aide_finish_him_error.rb +0 -26
  28. data/lib/decouplio/errors/doby_controversial_keys_error.rb +0 -26
  29. data/lib/decouplio/errors/doby_finish_him_error.rb +0 -26
  30. data/lib/decouplio/errors/step_is_not_defined_for_aide_error.rb +0 -26
  31. data/lib/decouplio/errors/step_is_not_defined_for_doby_error.rb +0 -27
  32. data/lib/decouplio/steps/aide.rb +0 -37
  33. data/lib/decouplio/steps/doby.rb +0 -37
@@ -10,8 +10,6 @@ require_relative 'errors/extra_key_for_pass_error'
10
10
  require_relative 'errors/extra_key_for_resq_error'
11
11
  require_relative 'errors/extra_key_for_wrap_error'
12
12
  require_relative 'errors/fail_finish_him_error'
13
- require_relative 'errors/doby_finish_him_error'
14
- require_relative 'errors/aide_finish_him_error'
15
13
  require_relative 'errors/invalid_error_class_error'
16
14
  require_relative 'errors/invalid_wrap_name_error'
17
15
  require_relative 'errors/pass_finish_him_error'
@@ -23,19 +21,14 @@ require_relative 'errors/step_is_not_defined_for_step_error'
23
21
  require_relative 'errors/step_is_not_defined_for_fail_error'
24
22
  require_relative 'errors/step_is_not_defined_for_pass_error'
25
23
  require_relative 'errors/step_is_not_defined_for_wrap_error'
26
- require_relative 'errors/step_is_not_defined_for_aide_error'
27
- require_relative 'errors/step_is_not_defined_for_doby_error'
28
24
  require_relative 'errors/wrap_finish_him_error'
29
25
  require_relative 'errors/wrap_klass_method_error'
30
26
  require_relative 'errors/step_controversial_keys_error'
31
- require_relative 'errors/doby_controversial_keys_error'
32
- require_relative 'errors/aide_controversial_keys_error'
33
27
  require_relative 'errors/fail_controversial_keys_error'
34
28
  require_relative 'errors/pass_controversial_keys_error'
35
29
  require_relative 'errors/octo_controversial_keys_error'
36
30
  require_relative 'errors/wrap_controversial_keys_error'
37
31
  require_relative 'errors/palp_is_not_defined_error'
38
- require_relative 'errors/error_store_error'
39
32
  require_relative 'errors/step_name_error'
40
33
 
41
34
  module Decouplio
@@ -78,25 +71,18 @@ module Decouplio
78
71
  validate_wrap(options: filtered_options, name: options[:name], step_names: step_names)
79
72
  when Decouplio::Const::Types::ACTION_TYPE_STEP
80
73
  validate_action(action_class: options[:action], type: Decouplio::Const::Types::STEP_TYPE)
81
- validate_error_store(parent_action_class: @action_class, child_action_class: options[:action])
82
74
  validate_step(options: filtered_options, step_names: step_names)
83
75
  when Decouplio::Const::Types::ACTION_TYPE_FAIL
84
76
  validate_action(action_class: options[:action], type: Decouplio::Const::Types::FAIL_TYPE)
85
- validate_error_store(parent_action_class: @action_class, child_action_class: options[:action])
86
77
  validate_fail(options: filtered_options, step_names: step_names)
87
78
  when Decouplio::Const::Types::ACTION_TYPE_PASS
88
79
  validate_action(action_class: options[:action], type: Decouplio::Const::Types::PASS_TYPE)
89
- validate_error_store(parent_action_class: @action_class, child_action_class: options[:action])
90
80
  validate_pass(options: filtered_options, step_names: step_names)
91
81
  when Decouplio::Const::Types::RESQ_TYPE_STEP,
92
82
  Decouplio::Const::Types::RESQ_TYPE_FAIL,
93
83
  Decouplio::Const::Types::RESQ_TYPE_PASS
94
84
  validate(options: options[:step_to_resq], step_names: step_names)
95
85
  validate_resq(options: filtered_options)
96
- when Decouplio::Const::Types::DOBY_TYPE
97
- validate_doby(options: filtered_options, step_names: step_names)
98
- when Decouplio::Const::Types::AIDE_TYPE
99
- validate_aide(options: filtered_options, step_names: step_names)
100
86
  end
101
87
  end
102
88
 
@@ -154,18 +140,6 @@ module Decouplio
154
140
  check_resq_exception_classes_inheritance(options: options)
155
141
  end
156
142
 
157
- def validate_doby(options:, step_names:)
158
- check_step_presence_for_doby(options: options, step_names: step_names)
159
- check_doby_controversial_keys(options: options)
160
- check_doby_finish_him(options: options)
161
- end
162
-
163
- def validate_aide(options:, step_names:)
164
- check_step_presence_for_aide(options: options, step_names: step_names)
165
- check_aide_controversial_keys(options: options)
166
- check_aide_finish_him(options: options)
167
- end
168
-
169
143
  def validate_name(name:)
170
144
  return unless Decouplio::Const::ReservedMethods::NAMES.include?(name)
171
145
 
@@ -202,34 +176,6 @@ module Decouplio
202
176
  end
203
177
  end
204
178
 
205
- def check_step_presence_for_doby(options:, step_names:)
206
- options.slice(*STEP_CHECK_STEP_PRESENCE).each do |option_key, option_value|
207
- next if %i[on_success on_failure on_error].include?(option_key) &&
208
- STEP_ALLOWED_ON_S_ON_F_VALUES.include?(option_value)
209
-
210
- next if step_names.keys.include?(option_value)
211
-
212
- raise Decouplio::Errors::StepIsNotDefinedForDobyError.new(
213
- errored_option: options.slice(option_key).to_s,
214
- details: option_value
215
- )
216
- end
217
- end
218
-
219
- def check_step_presence_for_aide(options:, step_names:)
220
- options.slice(*STEP_CHECK_STEP_PRESENCE).each do |option_key, option_value|
221
- next if %i[on_success on_failure on_error].include?(option_key) &&
222
- STEP_ALLOWED_ON_S_ON_F_VALUES.include?(option_value)
223
-
224
- next if step_names.keys.include?(option_value)
225
-
226
- raise Decouplio::Errors::StepIsNotDefinedForAideError.new(
227
- errored_option: options.slice(option_key).to_s,
228
- details: option_value
229
- )
230
- end
231
- end
232
-
233
179
  def check_step_presence_for_fail(options:, step_names:)
234
180
  options.slice(*STEP_CHECK_STEP_PRESENCE).each do |option_key, option_value|
235
181
  next if %i[on_success on_failure on_error].include?(option_key) &&
@@ -280,36 +226,6 @@ module Decouplio
280
226
  end
281
227
  end
282
228
 
283
- def check_doby_controversial_keys(options:)
284
- on_success_on_failure = options.slice(:on_success, :on_failure)
285
- finish_him = options.slice(:finish_him)
286
-
287
- if !on_success_on_failure.empty? && !finish_him.empty?
288
- raise Decouplio::Errors::DobyControversialKeysError.new(
289
- errored_option: on_success_on_failure.merge(finish_him).to_s,
290
- details: [on_success_on_failure.keys.join(', '), :finish_him]
291
- )
292
- end
293
- end
294
-
295
- def check_aide_controversial_keys(options:)
296
- on_success_on_failure = options.slice(:on_success, :on_failure)
297
- finish_him = options.slice(:finish_him)
298
-
299
- if !on_success_on_failure.empty? && !finish_him.empty?
300
- raise Decouplio::Errors::AideControversialKeysError.new(
301
- errored_option: on_success_on_failure.merge(finish_him).to_s,
302
- details: [on_success_on_failure.keys.join(', '), :finish_him]
303
- )
304
- end
305
- end
306
-
307
- def validate_error_store(parent_action_class:, child_action_class:)
308
- return if parent_action_class.error_store == child_action_class.error_store
309
-
310
- raise Decouplio::Errors::ErrorStoreError
311
- end
312
-
313
229
  def check_fail_extra_keys(options:)
314
230
  extra_keys = options.keys - FAIL_ALLOWED_OPTIONS
315
231
 
@@ -426,32 +342,6 @@ module Decouplio
426
342
  end
427
343
  end
428
344
 
429
- def check_doby_finish_him(options:)
430
- finish_him_value = options.dig(:finish_him)
431
-
432
- return unless finish_him_value && options.key?(:finish_him)
433
-
434
- unless ALLOWED_STEP_FINISH_HIM_VALUES.include?(finish_him_value)
435
- raise Decouplio::Errors::DobyFinishHimError.new(
436
- errored_option: options.slice(:finish_him).to_s,
437
- details: finish_him_value
438
- )
439
- end
440
- end
441
-
442
- def check_aide_finish_him(options:)
443
- finish_him_value = options.dig(:finish_him)
444
-
445
- return unless options.key?(:finish_him)
446
-
447
- return if ALLOWED_FAIL_FINISH_HIM_VALUES.include?(finish_him_value)
448
-
449
- raise Decouplio::Errors::AideFinishHimError.new(
450
- errored_option: options.slice(:finish_him).to_s,
451
- details: finish_him_value
452
- )
453
- end
454
-
455
345
  def check_fail_finish_him(options:)
456
346
  finish_him_value = options.dig(:finish_him)
457
347
 
@@ -567,6 +457,7 @@ module Decouplio
567
457
  hash_case
568
458
  wrap_flow
569
459
  step_to_resq
460
+ _args
570
461
  ].freeze
571
462
 
572
463
  # *************************************************
@@ -16,7 +16,11 @@ module Decouplio
16
16
 
17
17
  def process(instance:)
18
18
  instance.append_railway_flow(@name)
19
- outcome = @action.call(parent_ctx: instance.ctx, parent_railway_flow: instance.railway_flow)
19
+ outcome = @action.call(
20
+ parent_ctx: instance.ctx,
21
+ parent_railway_flow: instance.railway_flow,
22
+ meta_store: instance.ms
23
+ )
20
24
 
21
25
  resolve(outcome: outcome, instance: instance)
22
26
  end
@@ -26,8 +30,6 @@ module Decouplio
26
30
  def resolve(outcome:, instance:)
27
31
  result = outcome.success?
28
32
 
29
- instance.error_store.merge(outcome.error_store)
30
-
31
33
  Decouplio::Steps::Shared::FailResolver.call(
32
34
  instance: instance,
33
35
  result: result,
@@ -15,16 +15,18 @@ module Decouplio
15
15
 
16
16
  def process(instance:)
17
17
  instance.append_railway_flow(@name)
18
- outcome = @action.call(parent_ctx: instance.ctx, parent_railway_flow: instance.railway_flow)
18
+ @action.call(
19
+ parent_ctx: instance.ctx,
20
+ parent_railway_flow: instance.railway_flow,
21
+ meta_store: instance.ms
22
+ )
19
23
 
20
- resolve(outcome: outcome, instance: instance)
24
+ resolve(instance: instance)
21
25
  end
22
26
 
23
27
  private
24
28
 
25
- def resolve(outcome:, instance:)
26
- instance.error_store.merge(outcome.error_store)
27
-
29
+ def resolve(instance:)
28
30
  instance.pass_action
29
31
 
30
32
  if @on_success_type == Decouplio::Const::Results::FINISH_HIM
@@ -16,7 +16,11 @@ module Decouplio
16
16
 
17
17
  def process(instance:)
18
18
  instance.append_railway_flow(@name)
19
- outcome = @action.call(parent_ctx: instance.ctx, parent_railway_flow: instance.railway_flow)
19
+ outcome = @action.call(
20
+ parent_ctx: instance.ctx,
21
+ parent_railway_flow: instance.railway_flow,
22
+ meta_store: instance.ms
23
+ )
20
24
 
21
25
  resolve(outcome: outcome, instance: instance)
22
26
  end
@@ -26,8 +30,6 @@ module Decouplio
26
30
  def resolve(outcome:, instance:)
27
31
  result = outcome.success?
28
32
 
29
- instance.error_store.merge(outcome.error_store)
30
-
31
33
  Decouplio::Steps::Shared::StepResolver.call(
32
34
  instance: instance,
33
35
  result: result,
@@ -6,10 +6,11 @@ require_relative 'shared/fail_resolver'
6
6
  module Decouplio
7
7
  module Steps
8
8
  class ServiceFail < Decouplio::Steps::BaseStep
9
- def initialize(name:, service:, on_success_type:, on_failure_type:)
9
+ def initialize(name:, service:, args:, on_success_type:, on_failure_type:)
10
10
  super()
11
11
  @name = name
12
12
  @service = service
13
+ @args = args
13
14
  @on_success_type = on_success_type
14
15
  @on_failure_type = on_failure_type
15
16
  end
@@ -18,7 +19,8 @@ module Decouplio
18
19
  instance.append_railway_flow(@name)
19
20
  result = @service.call(
20
21
  ctx: instance.ctx,
21
- error_store: instance.error_store
22
+ ms: instance.meta_store,
23
+ **@args
22
24
  )
23
25
 
24
26
  resolve(result: result, instance: instance)
@@ -5,10 +5,11 @@ require_relative 'base_step'
5
5
  module Decouplio
6
6
  module Steps
7
7
  class ServicePass < Decouplio::Steps::BaseStep
8
- def initialize(name:, service:, on_success_type:, on_failure_type:)
8
+ def initialize(name:, service:, args:, on_success_type:, on_failure_type:)
9
9
  super()
10
10
  @name = name
11
11
  @service = service
12
+ @args = args
12
13
  @on_success_type = on_success_type
13
14
  @on_failure_type = on_failure_type
14
15
  end
@@ -17,7 +18,8 @@ module Decouplio
17
18
  instance.append_railway_flow(@name)
18
19
  @service.call(
19
20
  ctx: instance.ctx,
20
- error_store: instance.error_store
21
+ ms: instance.meta_store,
22
+ **@args
21
23
  )
22
24
 
23
25
  resolve(instance: instance)
@@ -6,10 +6,11 @@ require_relative 'shared/step_resolver'
6
6
  module Decouplio
7
7
  module Steps
8
8
  class ServiceStep < Decouplio::Steps::BaseStep
9
- def initialize(name:, service:, on_success_type:, on_failure_type:)
9
+ def initialize(name:, service:, args:, on_success_type:, on_failure_type:)
10
10
  super()
11
11
  @name = name
12
12
  @service = service
13
+ @args = args
13
14
  @on_success_type = on_success_type
14
15
  @on_failure_type = on_failure_type
15
16
  end
@@ -18,7 +19,8 @@ module Decouplio
18
19
  instance.append_railway_flow(@name)
19
20
  result = @service.call(
20
21
  ctx: instance.ctx,
21
- error_store: instance.error_store
22
+ ms: instance.meta_store,
23
+ **@args
22
24
  )
23
25
 
24
26
  resolve(result: result, instance: instance)
@@ -42,16 +42,6 @@ module Decouplio
42
42
  errored_option: condition_options.to_s,
43
43
  details: %i[if unless]
44
44
  )
45
- when Decouplio::Const::Types::DOBY_TYPE
46
- raise Decouplio::Errors::DobyControversialKeysError.new(
47
- errored_option: condition_options.to_s,
48
- details: %i[if unless]
49
- )
50
- when Decouplio::Const::Types::AIDE_TYPE
51
- raise Decouplio::Errors::AideControversialKeysError.new(
52
- errored_option: condition_options.to_s,
53
- details: %i[if unless]
54
- )
55
45
  end
56
46
  end
57
47
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Decouplio
4
- VERSION = '1.0.0alpha4'
4
+ VERSION = '1.0.0alpha8'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decouplio
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0alpha4
4
+ version: 1.0.0alpha8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Bal
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-06-26 00:00:00.000000000 Z
11
+ date: 2022-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -128,17 +128,16 @@ files:
128
128
  - docker-compose.yml
129
129
  - lib/decouplio.rb
130
130
  - lib/decouplio/action.rb
131
+ - lib/decouplio/action_state_printer.rb
131
132
  - lib/decouplio/composer.rb
132
133
  - lib/decouplio/const/colors.rb
133
- - lib/decouplio/const/doby_aide_options.rb
134
134
  - lib/decouplio/const/error_messages.rb
135
135
  - lib/decouplio/const/reserved_methods.rb
136
136
  - lib/decouplio/const/results.rb
137
+ - lib/decouplio/const/step_options.rb
137
138
  - lib/decouplio/const/types.rb
138
139
  - lib/decouplio/const/validations/action_option_class.rb
139
- - lib/decouplio/const/validations/aide.rb
140
140
  - lib/decouplio/const/validations/common.rb
141
- - lib/decouplio/const/validations/doby.rb
142
141
  - lib/decouplio/const/validations/fail.rb
143
142
  - lib/decouplio/const/validations/logic.rb
144
143
  - lib/decouplio/const/validations/octo.rb
@@ -147,14 +146,9 @@ files:
147
146
  - lib/decouplio/const/validations/resq.rb
148
147
  - lib/decouplio/const/validations/step.rb
149
148
  - lib/decouplio/const/validations/wrap.rb
150
- - lib/decouplio/default_error_handler.rb
149
+ - lib/decouplio/default_meta_store.rb
151
150
  - lib/decouplio/errors/action_class_error.rb
152
- - lib/decouplio/errors/aide_can_not_be_first_step_error.rb
153
- - lib/decouplio/errors/aide_controversial_keys_error.rb
154
- - lib/decouplio/errors/aide_finish_him_error.rb
155
151
  - lib/decouplio/errors/base_error.rb
156
- - lib/decouplio/errors/doby_controversial_keys_error.rb
157
- - lib/decouplio/errors/doby_finish_him_error.rb
158
152
  - lib/decouplio/errors/error_store_error.rb
159
153
  - lib/decouplio/errors/execution_error.rb
160
154
  - lib/decouplio/errors/extra_key_for_fail_error.rb
@@ -184,8 +178,6 @@ files:
184
178
  - lib/decouplio/errors/resq_handler_method_error.rb
185
179
  - lib/decouplio/errors/step_controversial_keys_error.rb
186
180
  - lib/decouplio/errors/step_finish_him_error.rb
187
- - lib/decouplio/errors/step_is_not_defined_for_aide_error.rb
188
- - lib/decouplio/errors/step_is_not_defined_for_doby_error.rb
189
181
  - lib/decouplio/errors/step_is_not_defined_for_fail_error.rb
190
182
  - lib/decouplio/errors/step_is_not_defined_for_pass_error.rb
191
183
  - lib/decouplio/errors/step_is_not_defined_for_step_error.rb
@@ -201,10 +193,8 @@ files:
201
193
  - lib/decouplio/octo_options_validator.rb
202
194
  - lib/decouplio/options_validator.rb
203
195
  - lib/decouplio/processor.rb
204
- - lib/decouplio/steps/aide.rb
205
196
  - lib/decouplio/steps/base_resq.rb
206
197
  - lib/decouplio/steps/base_step.rb
207
- - lib/decouplio/steps/doby.rb
208
198
  - lib/decouplio/steps/fail.rb
209
199
  - lib/decouplio/steps/if_condition_fail.rb
210
200
  - lib/decouplio/steps/if_condition_pass.rb
@@ -226,11 +216,11 @@ files:
226
216
  - lib/decouplio/steps/wrap.rb
227
217
  - lib/decouplio/validators/condition.rb
228
218
  - lib/decouplio/version.rb
229
- homepage: https://github.com/differencialx/decouplio/blob/master/docs
219
+ homepage: https://differencialx.github.io/decouplio.github.io/
230
220
  licenses:
231
221
  - MIT
232
222
  metadata:
233
- homepage_uri: https://github.com/differencialx/decouplio/blob/master/docs
223
+ homepage_uri: https://differencialx.github.io/decouplio.github.io/
234
224
  source_code_uri: https://github.com/differencialx/decouplio/blob/master/docs
235
225
  changelog_uri: https://github.com/differencialx/decouplio/blob/master/docs/CHANGELOG.md
236
226
  post_install_message:
@@ -248,7 +238,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
248
238
  - !ruby/object:Gem::Version
249
239
  version: 1.3.1
250
240
  requirements: []
251
- rubygems_version: 3.2.33
241
+ rubygems_version: 3.1.6
252
242
  signing_key:
253
243
  specification_version: 4
254
244
  summary: Gem for business logic encapsulation
@@ -1,38 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decouplio
4
- module Const
5
- module Validations
6
- module Aide
7
- VALIDATION_ERROR_MESSAGE = <<~ERROR_MESSAGE
8
- Next options are not allowed for "aide":
9
- %s
10
-
11
- Details:
12
- %s
13
-
14
- Allowed options are:
15
- %s
16
-
17
- Please read the manual about allowed options here:
18
- %s
19
- ERROR_MESSAGE
20
-
21
- ALLOWED_OPTIONS_MESSAGE = <<~ALLOWED_OPTIONS
22
- on_success: <step name OR :finish_him>
23
- on_failure: <step name OR :finish_him>
24
- finish_him: :on_success
25
- finish_him: :on_failure
26
- finish_him: true
27
- if: <instance method symbol>
28
- unless: <instance method symbol>
29
- ALLOWED_OPTIONS
30
- MANUAL_URL = 'https://stub.aide.manual.url'
31
- OPTIONS_IS_NOT_ALLOWED = '"%s" option(s) is not allowed for "aide"'
32
- METHOD_NOT_DEFINED = 'aide :%s'
33
- CONTROVERSIAL_KEYS = '"%s" option(s) is not allowed along with "%s" option(s)'
34
- FIRST_STEP = '"aide" can not be the first step'
35
- end
36
- end
37
- end
38
- end
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decouplio
4
- module Const
5
- module Validations
6
- module Doby
7
- VALIDATION_ERROR_MESSAGE = <<~ERROR_MESSAGE
8
- Next options are not allowed for "doby":
9
- %s
10
-
11
- Details:
12
- %s
13
-
14
- Allowed options are:
15
- %s
16
-
17
- Please read the manual about allowed options here:
18
- %s
19
- ERROR_MESSAGE
20
-
21
- ALLOWED_OPTIONS_MESSAGE = <<~ALLOWED_OPTIONS
22
- on_success: <step name OR :finish_him>
23
- on_failure: <step name OR :finish_him>
24
- finish_him: :on_success
25
- finish_him: :on_failure
26
- if: <instance method symbol>
27
- unless: <instance method symbol>
28
- ALLOWED_OPTIONS
29
- MANUAL_URL = 'https://stub.doby.manual.url'
30
- OPTIONS_IS_NOT_ALLOWED = '"%s" option(s) is not allowed for "doby"'
31
- METHOD_NOT_DEFINED = 'doby :%s'
32
- CONTROVERSIAL_KEYS = '"%s" option(s) is not allowed along with "%s" option(s)'
33
- end
34
- end
35
- end
36
- end
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decouplio
4
- class DefaultErrorHandler
5
- attr_reader :errors
6
-
7
- def initialize
8
- @errors = {}
9
- end
10
-
11
- def add_error(key, message)
12
- @errors.store(
13
- key,
14
- (@errors[key] || []) + [message].flatten
15
- )
16
- end
17
-
18
- def merge(error_store)
19
- @errors = @errors.merge(error_store.errors) do |_key, this_val, other_val|
20
- this_val + other_val
21
- end
22
- end
23
- end
24
- end
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'base_error'
4
- require_relative '../const/validations/aide'
5
-
6
- module Decouplio
7
- module Errors
8
- class AideCanNotBeFirstStepError < Decouplio::Errors::BaseError
9
- def template
10
- Decouplio::Const::Validations::Aide::FIRST_STEP
11
- end
12
-
13
- def interpolation_values
14
- []
15
- end
16
- end
17
- end
18
- end
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'base_error'
4
- require_relative '../const/validations/aide'
5
-
6
- module Decouplio
7
- module Errors
8
- class AideControversialKeysError < Decouplio::Errors::BaseError
9
- def template
10
- Decouplio::Const::Validations::Aide::VALIDATION_ERROR_MESSAGE
11
- end
12
-
13
- def interpolation_values
14
- [
15
- @errored_option,
16
- format(
17
- Decouplio::Const::Validations::Aide::CONTROVERSIAL_KEYS,
18
- *@details
19
- ),
20
- Decouplio::Const::Validations::Aide::ALLOWED_OPTIONS_MESSAGE,
21
- Decouplio::Const::Validations::Aide::MANUAL_URL
22
- ]
23
- end
24
- end
25
- end
26
- end
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'base_error'
4
- require_relative '../const/validations/aide'
5
-
6
- module Decouplio
7
- module Errors
8
- class AideFinishHimError < Decouplio::Errors::BaseError
9
- def template
10
- Decouplio::Const::Validations::Aide::VALIDATION_ERROR_MESSAGE
11
- end
12
-
13
- def interpolation_values
14
- [
15
- @errored_option,
16
- format(
17
- Decouplio::Const::Validations::Common::WRONG_FINISH_HIM_VALUE,
18
- @details
19
- ),
20
- Decouplio::Const::Validations::Aide::ALLOWED_OPTIONS_MESSAGE,
21
- Decouplio::Const::Validations::Aide::MANUAL_URL
22
- ]
23
- end
24
- end
25
- end
26
- end
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'base_error'
4
- require_relative '../const/validations/doby'
5
-
6
- module Decouplio
7
- module Errors
8
- class DobyControversialKeysError < Decouplio::Errors::BaseError
9
- def template
10
- Decouplio::Const::Validations::Doby::VALIDATION_ERROR_MESSAGE
11
- end
12
-
13
- def interpolation_values
14
- [
15
- @errored_option,
16
- format(
17
- Decouplio::Const::Validations::Doby::CONTROVERSIAL_KEYS,
18
- *@details
19
- ),
20
- Decouplio::Const::Validations::Doby::ALLOWED_OPTIONS_MESSAGE,
21
- Decouplio::Const::Validations::Doby::MANUAL_URL
22
- ]
23
- end
24
- end
25
- end
26
- end
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'base_error'
4
- require_relative '../const/validations/doby'
5
-
6
- module Decouplio
7
- module Errors
8
- class DobyFinishHimError < Decouplio::Errors::BaseError
9
- def template
10
- Decouplio::Const::Validations::Doby::VALIDATION_ERROR_MESSAGE
11
- end
12
-
13
- def interpolation_values
14
- [
15
- @errored_option,
16
- format(
17
- Decouplio::Const::Validations::Common::WRONG_FINISH_HIM_VALUE,
18
- @details
19
- ),
20
- Decouplio::Const::Validations::Doby::ALLOWED_OPTIONS_MESSAGE,
21
- Decouplio::Const::Validations::Doby::MANUAL_URL
22
- ]
23
- end
24
- end
25
- end
26
- end