decouplio 1.0.0alpha8 → 1.0.0rc

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 (130) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +313 -15
  3. data/decouplio.gemspec +8 -2
  4. data/lib/decouplio/action.rb +24 -40
  5. data/lib/decouplio/action_state_printer.rb +2 -5
  6. data/lib/decouplio/const/flows.rb +59 -0
  7. data/lib/decouplio/const/reserved_methods.rb +6 -13
  8. data/lib/decouplio/const/types.rb +0 -144
  9. data/lib/decouplio/const/validations/common.rb +10 -0
  10. data/lib/decouplio/const/validations/octo.rb +16 -0
  11. data/lib/decouplio/const/validations/resq.rb +12 -1
  12. data/lib/decouplio/ctx.rb +13 -0
  13. data/lib/decouplio/default_meta_store.rb +2 -4
  14. data/lib/decouplio/errors/action_class_error.rb +0 -3
  15. data/lib/decouplio/errors/base_error.rb +0 -3
  16. data/lib/decouplio/errors/execution_error.rb +0 -2
  17. data/lib/decouplio/errors/extra_key_for_pass_error.rb +0 -3
  18. data/lib/decouplio/errors/fail_can_not_be_first_step_error.rb +0 -3
  19. data/lib/decouplio/errors/fail_controversial_keys_error.rb +0 -3
  20. data/lib/decouplio/errors/fail_finish_him_error.rb +0 -3
  21. data/lib/decouplio/errors/invalid_error_class_error.rb +0 -3
  22. data/lib/decouplio/errors/invalid_options_for_resq_step.rb +18 -0
  23. data/lib/decouplio/errors/invalid_wrap_name_error.rb +0 -3
  24. data/lib/decouplio/errors/logic_is_not_defined_error.rb +0 -3
  25. data/lib/decouplio/errors/logic_redefinition_error.rb +0 -3
  26. data/lib/decouplio/errors/octo_block_is_not_defined_error.rb +0 -3
  27. data/lib/decouplio/errors/octo_case_is_not_defined_error.rb +19 -0
  28. data/lib/decouplio/errors/octo_controversial_keys_error.rb +0 -3
  29. data/lib/decouplio/errors/{error_store_error.rb → octo_finish_him_is_not_allowed_error.rb} +2 -4
  30. data/lib/decouplio/errors/options_validation_error.rb +13 -1
  31. data/lib/decouplio/errors/palp_block_is_not_defined_error.rb +0 -3
  32. data/lib/decouplio/errors/palp_validation_error.rb +0 -3
  33. data/lib/decouplio/errors/pass_controversial_keys_error.rb +0 -3
  34. data/lib/decouplio/errors/pass_finish_him_error.rb +0 -3
  35. data/lib/decouplio/errors/required_options_is_missing_for_octo_error.rb +0 -3
  36. data/lib/decouplio/errors/resq_definition_error.rb +0 -3
  37. data/lib/decouplio/errors/resq_error_class_error.rb +0 -3
  38. data/lib/decouplio/errors/resq_handler_method_error.rb +0 -3
  39. data/lib/decouplio/errors/step_controversial_keys_error.rb +0 -3
  40. data/lib/decouplio/errors/step_definition_error.rb +17 -0
  41. data/lib/decouplio/errors/step_finish_him_error.rb +0 -3
  42. data/lib/decouplio/errors/step_is_not_defined_for_fail_error.rb +0 -3
  43. data/lib/decouplio/errors/step_is_not_defined_for_pass_error.rb +0 -4
  44. data/lib/decouplio/errors/step_is_not_defined_for_step_error.rb +0 -4
  45. data/lib/decouplio/errors/step_is_not_defined_for_wrap_error.rb +0 -3
  46. data/lib/decouplio/errors/step_name_error.rb +0 -3
  47. data/lib/decouplio/errors/wrap_block_is_not_defined_error.rb +0 -3
  48. data/lib/decouplio/errors/wrap_controversial_keys_error.rb +0 -3
  49. data/lib/decouplio/errors/wrap_finish_him_error.rb +0 -3
  50. data/lib/decouplio/errors/wrap_klass_method_error.rb +0 -3
  51. data/lib/decouplio/graph.rb +9 -0
  52. data/lib/decouplio/logic_dsl.rb +340 -79
  53. data/lib/decouplio/new_flow.rb +283 -0
  54. data/lib/decouplio/octo_hash_case.rb +20 -5
  55. data/lib/decouplio/octo_options_validator.rb +10 -64
  56. data/lib/decouplio/step_validator.rb +200 -0
  57. data/lib/decouplio/steps/base_condition.rb +21 -0
  58. data/lib/decouplio/steps/base_if_condition.rb +11 -0
  59. data/lib/decouplio/steps/base_inner_action.rb +42 -0
  60. data/lib/decouplio/steps/base_octo.rb +26 -0
  61. data/lib/decouplio/steps/base_resq.rb +25 -28
  62. data/lib/decouplio/steps/base_resq_with_mapping.rb +34 -0
  63. data/lib/decouplio/steps/base_service_step.rb +39 -0
  64. data/lib/decouplio/steps/base_step.rb +33 -6
  65. data/lib/decouplio/steps/base_unless_condition.rb +11 -0
  66. data/lib/decouplio/steps/base_wrap.rb +27 -0
  67. data/lib/decouplio/steps/fail.rb +1 -28
  68. data/lib/decouplio/steps/if_condition_fail.rb +1 -21
  69. data/lib/decouplio/steps/if_condition_pass.rb +1 -19
  70. data/lib/decouplio/steps/inner_action_fail.rb +1 -35
  71. data/lib/decouplio/steps/inner_action_pass.rb +9 -29
  72. data/lib/decouplio/steps/inner_action_step.rb +1 -35
  73. data/lib/decouplio/steps/octo_by_key.rb +31 -0
  74. data/lib/decouplio/steps/octo_by_method.rb +31 -0
  75. data/lib/decouplio/steps/pass.rb +5 -26
  76. data/lib/decouplio/steps/resq_fail.rb +0 -2
  77. data/lib/decouplio/steps/resq_pass.rb +1 -3
  78. data/lib/decouplio/steps/resq_with_mapping_fail.rb +8 -0
  79. data/lib/decouplio/steps/resq_with_mapping_pass.rb +8 -0
  80. data/lib/decouplio/steps/service_as_fail.rb +8 -0
  81. data/lib/decouplio/steps/service_as_pass.rb +16 -0
  82. data/lib/decouplio/steps/service_as_step.rb +8 -0
  83. data/lib/decouplio/steps/step.rb +0 -24
  84. data/lib/decouplio/steps/unless_condition_fail.rb +1 -21
  85. data/lib/decouplio/steps/unless_condition_pass.rb +1 -19
  86. data/lib/decouplio/steps/wrap.rb +25 -37
  87. data/lib/decouplio/steps/wrap_with_class.rb +43 -0
  88. data/lib/decouplio/steps/wrap_with_class_method.rb +45 -0
  89. data/lib/decouplio/utils/prepare_resq_mappings.rb +17 -0
  90. data/lib/decouplio/version.rb +1 -1
  91. data/lib/decouplio.rb +93 -0
  92. metadata +30 -42
  93. data/.circleci/config.yml +0 -63
  94. data/.dockerignore +0 -12
  95. data/.gitignore +0 -13
  96. data/.rspec +0 -3
  97. data/.rubocop.yml +0 -108
  98. data/.rubocop_todo.yml +0 -147
  99. data/.ruby-version +0 -1
  100. data/.vscode/settings.json +0 -3
  101. data/Dockerfile +0 -12
  102. data/Gemfile +0 -8
  103. data/benchmarks/.ruby-version +0 -1
  104. data/benchmarks/Dockerfile +0 -12
  105. data/benchmarks/Gemfile +0 -12
  106. data/benchmarks/multi_step_benchmark.rb +0 -336
  107. data/benchmarks/single_step_benchmark.rb +0 -159
  108. data/bin/console +0 -15
  109. data/bin/setup +0 -8
  110. data/docker-compose.yml +0 -29
  111. data/lib/decouplio/composer.rb +0 -615
  112. data/lib/decouplio/const/colors.rb +0 -25
  113. data/lib/decouplio/const/results.rb +0 -15
  114. data/lib/decouplio/const/step_options.rb +0 -16
  115. data/lib/decouplio/errors/extra_key_for_fail_error.rb +0 -26
  116. data/lib/decouplio/errors/extra_key_for_octo_error.rb +0 -26
  117. data/lib/decouplio/errors/extra_key_for_resq_error.rb +0 -29
  118. data/lib/decouplio/errors/extra_key_for_step_error.rb +0 -23
  119. data/lib/decouplio/errors/extra_key_for_wrap_error.rb +0 -23
  120. data/lib/decouplio/errors/palp_is_not_defined_error.rb +0 -26
  121. data/lib/decouplio/flow.rb +0 -17
  122. data/lib/decouplio/options_validator.rb +0 -606
  123. data/lib/decouplio/processor.rb +0 -20
  124. data/lib/decouplio/steps/octo.rb +0 -27
  125. data/lib/decouplio/steps/service_fail.rb +0 -41
  126. data/lib/decouplio/steps/service_pass.rb +0 -41
  127. data/lib/decouplio/steps/service_step.rb +0 -41
  128. data/lib/decouplio/steps/shared/fail_resolver.rb +0 -40
  129. data/lib/decouplio/steps/shared/step_resolver.rb +0 -43
  130. data/lib/decouplio/validators/condition.rb +0 -49
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'base_step'
4
-
5
- module Decouplio
6
- module Steps
7
- class ServicePass < Decouplio::Steps::BaseStep
8
- def initialize(name:, service:, args:, on_success_type:, on_failure_type:)
9
- super()
10
- @name = name
11
- @service = service
12
- @args = args
13
- @on_success_type = on_success_type
14
- @on_failure_type = on_failure_type
15
- end
16
-
17
- def process(instance:)
18
- instance.append_railway_flow(@name)
19
- @service.call(
20
- ctx: instance.ctx,
21
- ms: instance.meta_store,
22
- **@args
23
- )
24
-
25
- resolve(instance: instance)
26
- end
27
-
28
- private
29
-
30
- def resolve(instance:)
31
- instance.pass_action
32
-
33
- if @on_success_type == Decouplio::Const::Results::FINISH_HIM
34
- Decouplio::Const::Results::FINISH_HIM
35
- else
36
- Decouplio::Const::Results::PASS
37
- end
38
- end
39
- end
40
- end
41
- end
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'base_step'
4
- require_relative 'shared/step_resolver'
5
-
6
- module Decouplio
7
- module Steps
8
- class ServiceStep < Decouplio::Steps::BaseStep
9
- def initialize(name:, service:, args:, on_success_type:, on_failure_type:)
10
- super()
11
- @name = name
12
- @service = service
13
- @args = args
14
- @on_success_type = on_success_type
15
- @on_failure_type = on_failure_type
16
- end
17
-
18
- def process(instance:)
19
- instance.append_railway_flow(@name)
20
- result = @service.call(
21
- ctx: instance.ctx,
22
- ms: instance.meta_store,
23
- **@args
24
- )
25
-
26
- resolve(result: result, instance: instance)
27
- end
28
-
29
- private
30
-
31
- def resolve(result:, instance:)
32
- Decouplio::Steps::Shared::StepResolver.call(
33
- instance: instance,
34
- result: result,
35
- on_success_type: @on_success_type,
36
- on_failure_type: @on_failure_type
37
- )
38
- end
39
- end
40
- end
41
- end
@@ -1,40 +0,0 @@
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
@@ -1,43 +0,0 @@
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,49 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # require_relative 'base_step'
4
-
5
- module Decouplio
6
- module Validators
7
- class Condition
8
- ONE = 1 # lol
9
-
10
- def self.validate(condition_options:, type:)
11
- return if condition_options.size == ONE
12
-
13
- case type
14
- when Decouplio::Const::Types::STEP_TYPE,
15
- Decouplio::Const::Types::RESQ_TYPE_STEP,
16
- Decouplio::Const::Types::ACTION_TYPE_STEP
17
- raise Decouplio::Errors::StepControversialKeysError.new(
18
- errored_option: condition_options.to_s,
19
- details: %i[if unless]
20
- )
21
- when Decouplio::Const::Types::FAIL_TYPE,
22
- Decouplio::Const::Types::RESQ_TYPE_FAIL,
23
- Decouplio::Const::Types::ACTION_TYPE_FAIL
24
- raise Decouplio::Errors::FailControversialKeysError.new(
25
- errored_option: condition_options.to_s,
26
- details: %i[if unless]
27
- )
28
- when Decouplio::Const::Types::PASS_TYPE,
29
- Decouplio::Const::Types::RESQ_TYPE_PASS,
30
- Decouplio::Const::Types::ACTION_TYPE_PASS
31
- raise Decouplio::Errors::PassControversialKeysError.new(
32
- errored_option: condition_options.to_s,
33
- details: %i[if unless]
34
- )
35
- when Decouplio::Const::Types::OCTO_TYPE
36
- raise Decouplio::Errors::OctoControversialKeysError.new(
37
- errored_option: condition_options.to_s,
38
- details: %i[if unless]
39
- )
40
- when Decouplio::Const::Types::WRAP_TYPE
41
- raise Decouplio::Errors::WrapControversialKeysError.new(
42
- errored_option: condition_options.to_s,
43
- details: %i[if unless]
44
- )
45
- end
46
- end
47
- end
48
- end
49
- end