decouplio 1.0.0alpha1 → 1.0.0alpha2

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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +4 -0
  3. data/README.md +26 -2
  4. data/benchmarks/Gemfile +2 -1
  5. data/benchmarks/multi_step_benchmark.rb +335 -0
  6. data/benchmarks/single_step_benchmark.rb +159 -0
  7. data/docker-compose.yml +13 -2
  8. data/docs/deny.rb +59 -0
  9. data/docs/doby.rb +1 -1
  10. data/docs/doby_deny.md +171 -0
  11. data/docs/fail.md +143 -0
  12. data/docs/fail.rb +126 -29
  13. data/docs/resq.md +2 -2
  14. data/docs/step.md +148 -0
  15. data/docs/step.rb +119 -18
  16. data/docs/step_as_a_service.md +25 -11
  17. data/docs/step_as_a_service.rb +2 -2
  18. data/docs/wrap.md +8 -0
  19. data/lib/decouplio/action.rb +22 -3
  20. data/lib/decouplio/composer.rb +78 -12
  21. data/lib/decouplio/const/reserved_methods.rb +13 -9
  22. data/lib/decouplio/const/results.rb +2 -0
  23. data/lib/decouplio/const/types.rb +11 -5
  24. data/lib/decouplio/const/validations/deny.rb +11 -0
  25. data/lib/decouplio/const/validations/fail.rb +1 -1
  26. data/lib/decouplio/errors/deny_can_not_be_first_step_error.rb +18 -0
  27. data/lib/decouplio/errors/{fail_is_first_step_error.rb → fail_can_not_be_first_step_error.rb} +1 -1
  28. data/lib/decouplio/logic_dsl.rb +14 -2
  29. data/lib/decouplio/options_validator.rb +8 -3
  30. data/lib/decouplio/steps/deny.rb +31 -0
  31. data/lib/decouplio/steps/doby.rb +5 -1
  32. data/lib/decouplio/steps/fail.rb +7 -22
  33. data/lib/decouplio/steps/inner_action_fail.rb +7 -22
  34. data/lib/decouplio/steps/inner_action_step.rb +7 -18
  35. data/lib/decouplio/steps/service_fail.rb +11 -23
  36. data/lib/decouplio/steps/service_pass.rb +4 -1
  37. data/lib/decouplio/steps/service_step.rb +11 -19
  38. data/lib/decouplio/steps/shared/fail_resolver.rb +40 -0
  39. data/lib/decouplio/steps/shared/step_resolver.rb +43 -0
  40. data/lib/decouplio/steps/step.rb +7 -18
  41. data/lib/decouplio/steps/wrap.rb +7 -18
  42. data/lib/decouplio/version.rb +1 -1
  43. metadata +12 -5
  44. data/benchmarks/benchmarks.rb +0 -527
  45. data/docs/doby.md +0 -80
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decouplio
4
+ module Steps
5
+ module Shared
6
+ class FailResolver
7
+ def self.call(instance:, result:, on_success_type:, on_failure_type:)
8
+ if result
9
+ case on_success_type
10
+ when Decouplio::Const::Results::STEP_PASS, Decouplio::Const::Results::PASS
11
+ instance.pass_action
12
+ Decouplio::Const::Results::PASS
13
+ when Decouplio::Const::Results::STEP_FAIL, Decouplio::Const::Results::FAIL
14
+ instance.fail_action
15
+ Decouplio::Const::Results::PASS
16
+ when Decouplio::Const::Results::FINISH_HIM
17
+ instance.fail_action
18
+ Decouplio::Const::Results::FINISH_HIM
19
+ end
20
+ elsif [
21
+ Decouplio::Const::Results::STEP_PASS,
22
+ Decouplio::Const::Results::PASS
23
+ ].include?(on_failure_type)
24
+ instance.pass_action
25
+ Decouplio::Const::Results::FAIL
26
+ elsif [
27
+ Decouplio::Const::Results::STEP_FAIL,
28
+ Decouplio::Const::Results::FAIL
29
+ ].include?(on_failure_type)
30
+ instance.fail_action
31
+ Decouplio::Const::Results::FAIL
32
+ elsif on_failure_type == Decouplio::Const::Results::FINISH_HIM
33
+ instance.fail_action
34
+ Decouplio::Const::Results::FINISH_HIM
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decouplio
4
+ module Steps
5
+ module Shared
6
+ class StepResolver
7
+ def self.call(instance:, result:, on_success_type:, on_failure_type:)
8
+ if result
9
+ if [
10
+ Decouplio::Const::Results::PASS,
11
+ Decouplio::Const::Results::FAIL,
12
+ Decouplio::Const::Results::STEP_PASS
13
+ ].include?(on_success_type)
14
+ instance.pass_action
15
+ Decouplio::Const::Results::PASS
16
+ elsif Decouplio::Const::Results::STEP_FAIL == on_success_type
17
+ instance.fail_action
18
+ Decouplio::Const::Results::PASS
19
+ elsif on_success_type == Decouplio::Const::Results::FINISH_HIM
20
+ instance.pass_action
21
+ Decouplio::Const::Results::FINISH_HIM
22
+ end
23
+ elsif Decouplio::Const::Results::STEP_PASS == on_failure_type
24
+ instance.pass_action
25
+ Decouplio::Const::Results::PASS
26
+ elsif Decouplio::Const::Results::STEP_FAIL == on_failure_type
27
+ instance.fail_action
28
+ Decouplio::Const::Results::PASS
29
+ elsif on_failure_type == Decouplio::Const::Results::PASS
30
+ instance.pass_action
31
+ Decouplio::Const::Results::FAIL
32
+ elsif on_failure_type == Decouplio::Const::Results::FAIL
33
+ instance.fail_action
34
+ Decouplio::Const::Results::FAIL
35
+ elsif on_failure_type == Decouplio::Const::Results::FINISH_HIM
36
+ instance.fail_action
37
+ Decouplio::Const::Results::FINISH_HIM
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'base_step'
4
+ require_relative 'shared/step_resolver'
4
5
 
5
6
  module Decouplio
6
7
  module Steps
@@ -19,24 +20,12 @@ module Decouplio
19
20
  end
20
21
 
21
22
  def resolve(result:, instance:)
22
- if result
23
- if [Decouplio::Const::Results::PASS, Decouplio::Const::Results::FAIL].include?(@on_success_type)
24
- instance.pass_action
25
- Decouplio::Const::Results::PASS
26
- elsif @on_success_type == Decouplio::Const::Results::FINISH_HIM
27
- instance.pass_action
28
- Decouplio::Const::Results::FINISH_HIM
29
- end
30
- elsif @on_failure_type == Decouplio::Const::Results::PASS
31
- instance.pass_action
32
- Decouplio::Const::Results::FAIL
33
- elsif @on_failure_type == Decouplio::Const::Results::FAIL
34
- instance.fail_action
35
- Decouplio::Const::Results::FAIL
36
- elsif @on_failure_type == Decouplio::Const::Results::FINISH_HIM
37
- instance.fail_action
38
- Decouplio::Const::Results::FINISH_HIM
39
- end
23
+ Decouplio::Steps::Shared::StepResolver.call(
24
+ instance: instance,
25
+ result: result,
26
+ on_success_type: @on_success_type,
27
+ on_failure_type: @on_failure_type
28
+ )
40
29
  end
41
30
  end
42
31
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require_relative 'base_step'
4
4
  require_relative '../processor'
5
+ require_relative 'shared/step_resolver'
5
6
 
6
7
  module Decouplio
7
8
  module Steps
@@ -38,24 +39,12 @@ module Decouplio
38
39
  def resolve(instance:)
39
40
  result = instance.success?
40
41
 
41
- if result
42
- if [Decouplio::Const::Results::PASS, Decouplio::Const::Results::FAIL].include?(@on_success_type)
43
- instance.pass_action
44
- Decouplio::Const::Results::PASS
45
- elsif @on_success_type == Decouplio::Const::Results::FINISH_HIM
46
- instance.pass_action
47
- Decouplio::Const::Results::FINISH_HIM
48
- end
49
- elsif @on_failure_type == Decouplio::Const::Results::PASS
50
- instance.pass_action
51
- Decouplio::Const::Results::FAIL
52
- elsif @on_failure_type == Decouplio::Const::Results::FAIL
53
- instance.fail_action
54
- Decouplio::Const::Results::FAIL
55
- elsif @on_failure_type == Decouplio::Const::Results::FINISH_HIM
56
- instance.fail_action
57
- Decouplio::Const::Results::FINISH_HIM
58
- end
42
+ Decouplio::Steps::Shared::StepResolver.call(
43
+ instance: instance,
44
+ result: result,
45
+ on_success_type: @on_success_type,
46
+ on_failure_type: @on_failure_type
47
+ )
59
48
  end
60
49
  end
61
50
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Decouplio
4
- VERSION = '1.0.0alpha1'
4
+ VERSION = '1.0.0alpha2'
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.0alpha1
4
+ version: 1.0.0alpha2
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-05-23 00:00:00.000000000 Z
11
+ date: 2022-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -120,7 +120,8 @@ files:
120
120
  - benchmarks/.ruby-version
121
121
  - benchmarks/Dockerfile
122
122
  - benchmarks/Gemfile
123
- - benchmarks/benchmarks.rb
123
+ - benchmarks/multi_step_benchmark.rb
124
+ - benchmarks/single_step_benchmark.rb
124
125
  - bin/console
125
126
  - bin/setup
126
127
  - decouplio.gemspec
@@ -129,8 +130,9 @@ files:
129
130
  - docs/benchmarks.md
130
131
  - docs/context.md
131
132
  - docs/context.rb
132
- - docs/doby.md
133
+ - docs/deny.rb
133
134
  - docs/doby.rb
135
+ - docs/doby_deny.md
134
136
  - docs/error_store.md
135
137
  - docs/error_store.rb
136
138
  - docs/fail.md
@@ -162,6 +164,7 @@ files:
162
164
  - lib/decouplio/const/types.rb
163
165
  - lib/decouplio/const/validations/action_option_class.rb
164
166
  - lib/decouplio/const/validations/common.rb
167
+ - lib/decouplio/const/validations/deny.rb
165
168
  - lib/decouplio/const/validations/fail.rb
166
169
  - lib/decouplio/const/validations/logic.rb
167
170
  - lib/decouplio/const/validations/octo.rb
@@ -173,6 +176,7 @@ files:
173
176
  - lib/decouplio/default_error_handler.rb
174
177
  - lib/decouplio/errors/action_class_error.rb
175
178
  - lib/decouplio/errors/base_error.rb
179
+ - lib/decouplio/errors/deny_can_not_be_first_step_error.rb
176
180
  - lib/decouplio/errors/error_store_error.rb
177
181
  - lib/decouplio/errors/extra_key_for_fail_error.rb
178
182
  - lib/decouplio/errors/extra_key_for_octo_error.rb
@@ -180,9 +184,9 @@ files:
180
184
  - lib/decouplio/errors/extra_key_for_resq_error.rb
181
185
  - lib/decouplio/errors/extra_key_for_step_error.rb
182
186
  - lib/decouplio/errors/extra_key_for_wrap_error.rb
187
+ - lib/decouplio/errors/fail_can_not_be_first_step_error.rb
183
188
  - lib/decouplio/errors/fail_controversial_keys_error.rb
184
189
  - lib/decouplio/errors/fail_finish_him_error.rb
185
- - lib/decouplio/errors/fail_is_first_step_error.rb
186
190
  - lib/decouplio/errors/invalid_error_class_error.rb
187
191
  - lib/decouplio/errors/invalid_wrap_name_error.rb
188
192
  - lib/decouplio/errors/logic_is_not_defined_error.rb
@@ -217,6 +221,7 @@ files:
217
221
  - lib/decouplio/processor.rb
218
222
  - lib/decouplio/steps/base_resq.rb
219
223
  - lib/decouplio/steps/base_step.rb
224
+ - lib/decouplio/steps/deny.rb
220
225
  - lib/decouplio/steps/doby.rb
221
226
  - lib/decouplio/steps/fail.rb
222
227
  - lib/decouplio/steps/if_condition_fail.rb
@@ -231,6 +236,8 @@ files:
231
236
  - lib/decouplio/steps/service_fail.rb
232
237
  - lib/decouplio/steps/service_pass.rb
233
238
  - lib/decouplio/steps/service_step.rb
239
+ - lib/decouplio/steps/shared/fail_resolver.rb
240
+ - lib/decouplio/steps/shared/step_resolver.rb
234
241
  - lib/decouplio/steps/step.rb
235
242
  - lib/decouplio/steps/unless_condition_fail.rb
236
243
  - lib/decouplio/steps/unless_condition_pass.rb