decouplio 1.0.0alpha → 1.0.0alpha3

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 (61) 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 +336 -0
  6. data/benchmarks/single_step_benchmark.rb +159 -0
  7. data/decouplio.gemspec +1 -1
  8. data/docker-compose.yml +13 -2
  9. data/docs/aide.rb +59 -0
  10. data/docs/doby.rb +1 -1
  11. data/docs/doby_aide.md +208 -0
  12. data/docs/fail.md +143 -0
  13. data/docs/fail.rb +126 -29
  14. data/docs/index.md +1 -1
  15. data/docs/logic_block.md +4 -0
  16. data/docs/octo.md +59 -2
  17. data/docs/quick_start.md +1 -1
  18. data/docs/resq.md +2 -2
  19. data/docs/step.md +148 -0
  20. data/docs/step.rb +119 -18
  21. data/docs/step_as_a_service.md +25 -11
  22. data/docs/step_as_a_service.rb +2 -2
  23. data/docs/wrap.md +8 -0
  24. data/lib/decouplio/action.rb +22 -3
  25. data/lib/decouplio/composer.rb +91 -20
  26. data/lib/decouplio/const/doby_aide_options.rb +15 -0
  27. data/lib/decouplio/const/reserved_methods.rb +13 -9
  28. data/lib/decouplio/const/results.rb +2 -0
  29. data/lib/decouplio/const/types.rb +19 -5
  30. data/lib/decouplio/const/validations/aide.rb +38 -0
  31. data/lib/decouplio/const/validations/doby.rb +36 -0
  32. data/lib/decouplio/const/validations/fail.rb +5 -1
  33. data/lib/decouplio/const/validations/octo.rb +2 -1
  34. data/lib/decouplio/errors/aide_can_not_be_first_step_error.rb +18 -0
  35. data/lib/decouplio/errors/aide_controversial_keys_error.rb +26 -0
  36. data/lib/decouplio/errors/aide_finish_him_error.rb +26 -0
  37. data/lib/decouplio/errors/doby_controversial_keys_error.rb +26 -0
  38. data/lib/decouplio/errors/doby_finish_him_error.rb +26 -0
  39. data/lib/decouplio/errors/{fail_is_first_step_error.rb → fail_can_not_be_first_step_error.rb} +1 -1
  40. data/lib/decouplio/errors/step_is_not_defined_for_aide_error.rb +26 -0
  41. data/lib/decouplio/errors/step_is_not_defined_for_doby_error.rb +27 -0
  42. data/lib/decouplio/logic_dsl.rb +30 -3
  43. data/lib/decouplio/options_validator.rb +122 -8
  44. data/lib/decouplio/steps/aide.rb +37 -0
  45. data/lib/decouplio/steps/doby.rb +14 -9
  46. data/lib/decouplio/steps/fail.rb +7 -22
  47. data/lib/decouplio/steps/inner_action_fail.rb +7 -22
  48. data/lib/decouplio/steps/inner_action_step.rb +7 -18
  49. data/lib/decouplio/steps/octo.rb +7 -2
  50. data/lib/decouplio/steps/service_fail.rb +11 -23
  51. data/lib/decouplio/steps/service_pass.rb +4 -1
  52. data/lib/decouplio/steps/service_step.rb +11 -19
  53. data/lib/decouplio/steps/shared/fail_resolver.rb +40 -0
  54. data/lib/decouplio/steps/shared/step_resolver.rb +43 -0
  55. data/lib/decouplio/steps/step.rb +7 -18
  56. data/lib/decouplio/steps/wrap.rb +7 -18
  57. data/lib/decouplio/validators/condition.rb +10 -0
  58. data/lib/decouplio/version.rb +1 -1
  59. metadata +22 -7
  60. data/benchmarks/benchmarks.rb +0 -527
  61. 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
@@ -42,6 +42,16 @@ 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
+ )
45
55
  end
46
56
  end
47
57
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Decouplio
4
- VERSION = '1.0.0alpha'
4
+ VERSION = '1.0.0alpha3'
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.0alpha
4
+ version: 1.0.0alpha3
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-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -120,17 +120,19 @@ 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
127
128
  - docker-compose.yml
128
129
  - docs/_config.yml
130
+ - docs/aide.rb
129
131
  - docs/benchmarks.md
130
132
  - docs/context.md
131
133
  - docs/context.rb
132
- - docs/doby.md
133
134
  - docs/doby.rb
135
+ - docs/doby_aide.md
134
136
  - docs/error_store.md
135
137
  - docs/error_store.rb
136
138
  - docs/fail.md
@@ -157,11 +159,14 @@ files:
157
159
  - lib/decouplio/action.rb
158
160
  - lib/decouplio/composer.rb
159
161
  - lib/decouplio/const/colors.rb
162
+ - lib/decouplio/const/doby_aide_options.rb
160
163
  - lib/decouplio/const/reserved_methods.rb
161
164
  - lib/decouplio/const/results.rb
162
165
  - lib/decouplio/const/types.rb
163
166
  - lib/decouplio/const/validations/action_option_class.rb
167
+ - lib/decouplio/const/validations/aide.rb
164
168
  - lib/decouplio/const/validations/common.rb
169
+ - lib/decouplio/const/validations/doby.rb
165
170
  - lib/decouplio/const/validations/fail.rb
166
171
  - lib/decouplio/const/validations/logic.rb
167
172
  - lib/decouplio/const/validations/octo.rb
@@ -172,7 +177,12 @@ files:
172
177
  - lib/decouplio/const/validations/wrap.rb
173
178
  - lib/decouplio/default_error_handler.rb
174
179
  - lib/decouplio/errors/action_class_error.rb
180
+ - lib/decouplio/errors/aide_can_not_be_first_step_error.rb
181
+ - lib/decouplio/errors/aide_controversial_keys_error.rb
182
+ - lib/decouplio/errors/aide_finish_him_error.rb
175
183
  - lib/decouplio/errors/base_error.rb
184
+ - lib/decouplio/errors/doby_controversial_keys_error.rb
185
+ - lib/decouplio/errors/doby_finish_him_error.rb
176
186
  - lib/decouplio/errors/error_store_error.rb
177
187
  - lib/decouplio/errors/extra_key_for_fail_error.rb
178
188
  - lib/decouplio/errors/extra_key_for_octo_error.rb
@@ -180,9 +190,9 @@ files:
180
190
  - lib/decouplio/errors/extra_key_for_resq_error.rb
181
191
  - lib/decouplio/errors/extra_key_for_step_error.rb
182
192
  - lib/decouplio/errors/extra_key_for_wrap_error.rb
193
+ - lib/decouplio/errors/fail_can_not_be_first_step_error.rb
183
194
  - lib/decouplio/errors/fail_controversial_keys_error.rb
184
195
  - lib/decouplio/errors/fail_finish_him_error.rb
185
- - lib/decouplio/errors/fail_is_first_step_error.rb
186
196
  - lib/decouplio/errors/invalid_error_class_error.rb
187
197
  - lib/decouplio/errors/invalid_wrap_name_error.rb
188
198
  - lib/decouplio/errors/logic_is_not_defined_error.rb
@@ -201,6 +211,8 @@ files:
201
211
  - lib/decouplio/errors/resq_handler_method_error.rb
202
212
  - lib/decouplio/errors/step_controversial_keys_error.rb
203
213
  - lib/decouplio/errors/step_finish_him_error.rb
214
+ - lib/decouplio/errors/step_is_not_defined_for_aide_error.rb
215
+ - lib/decouplio/errors/step_is_not_defined_for_doby_error.rb
204
216
  - lib/decouplio/errors/step_is_not_defined_for_fail_error.rb
205
217
  - lib/decouplio/errors/step_is_not_defined_for_step_error.rb
206
218
  - lib/decouplio/errors/step_is_not_defined_for_wrap_error.rb
@@ -215,6 +227,7 @@ files:
215
227
  - lib/decouplio/octo_options_validator.rb
216
228
  - lib/decouplio/options_validator.rb
217
229
  - lib/decouplio/processor.rb
230
+ - lib/decouplio/steps/aide.rb
218
231
  - lib/decouplio/steps/base_resq.rb
219
232
  - lib/decouplio/steps/base_step.rb
220
233
  - lib/decouplio/steps/doby.rb
@@ -231,17 +244,19 @@ files:
231
244
  - lib/decouplio/steps/service_fail.rb
232
245
  - lib/decouplio/steps/service_pass.rb
233
246
  - lib/decouplio/steps/service_step.rb
247
+ - lib/decouplio/steps/shared/fail_resolver.rb
248
+ - lib/decouplio/steps/shared/step_resolver.rb
234
249
  - lib/decouplio/steps/step.rb
235
250
  - lib/decouplio/steps/unless_condition_fail.rb
236
251
  - lib/decouplio/steps/unless_condition_pass.rb
237
252
  - lib/decouplio/steps/wrap.rb
238
253
  - lib/decouplio/validators/condition.rb
239
254
  - lib/decouplio/version.rb
240
- homepage: http://nohomepage.com
255
+ homepage: https://github.com/differencialx/decouplio
241
256
  licenses:
242
257
  - MIT
243
258
  metadata:
244
- homepage_uri: http://nohomepage.com
259
+ homepage_uri: https://github.com/differencialx/decouplio
245
260
  source_code_uri: https://github.com/differencialx/decouplio
246
261
  changelog_uri: https://github.com/differencialx/decouplio/CHANGELOG.md
247
262
  post_install_message: