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,32 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'base_step'
4
- require_relative 'shared/step_resolver'
5
-
6
3
  module Decouplio
7
4
  module Steps
8
5
  class Step < Decouplio::Steps::BaseStep
9
- def initialize(name:, on_success_type:, on_failure_type:)
10
- super()
11
- @name = name
12
- @on_success_type = on_success_type
13
- @on_failure_type = on_failure_type
14
- end
15
-
16
- def process(instance:)
17
- instance.append_railway_flow(@name)
18
- result = instance.send(@name, **instance.ctx)
19
- resolve(result: result, instance: instance)
20
- end
21
-
22
- def resolve(result:, instance:)
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
- )
29
- end
30
6
  end
31
7
  end
32
8
  end
@@ -1,28 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'base_step'
4
-
5
3
  module Decouplio
6
4
  module Steps
7
- class UnlessConditionFail < Decouplio::Steps::BaseStep
8
- def initialize(name:)
9
- super()
10
- @name = name
11
- end
12
-
13
- def process(instance:)
14
- result = instance.send(@name, **instance.ctx)
15
-
16
- resolve(result: result, instance: instance)
17
- end
18
-
19
- private
20
-
21
- def resolve(result:, instance:)
22
- instance.fail_action
23
-
24
- result ? Decouplio::Const::Results::FAIL : Decouplio::Const::Results::PASS
25
- end
5
+ class UnlessConditionFail < Decouplio::Steps::BaseUnlessCondition
26
6
  end
27
7
  end
28
8
  end
@@ -1,26 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'base_step'
4
-
5
3
  module Decouplio
6
4
  module Steps
7
- class UnlessConditionPass < Decouplio::Steps::BaseStep
8
- def initialize(name:)
9
- super()
10
- @name = name
11
- end
12
-
13
- def process(instance:)
14
- result = instance.send(@name, **instance.ctx)
15
-
16
- resolve(result: result)
17
- end
18
-
19
- private
20
-
21
- def resolve(result:)
22
- result ? Decouplio::Const::Results::FAIL : Decouplio::Const::Results::PASS
23
- end
5
+ class UnlessConditionPass < Decouplio::Steps::BaseUnlessCondition
24
6
  end
25
7
  end
26
8
  end
@@ -1,50 +1,38 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'base_step'
4
- require_relative '../processor'
5
- require_relative 'shared/step_resolver'
6
-
7
3
  module Decouplio
8
4
  module Steps
9
- class Wrap < Decouplio::Steps::BaseStep
10
- def initialize(name:, klass:, method:, wrap_flow:, on_success_type:, on_failure_type:)
5
+ class Wrap < Decouplio::Steps::BaseWrap
6
+ def initialize(
7
+ name,
8
+ wrap_block,
9
+ on_success,
10
+ on_failure,
11
+ on_error,
12
+ finish_him
13
+ )
11
14
  super()
12
15
  @name = name
13
- @klass = klass
14
- @method = method
15
- @wrap_flow = wrap_flow
16
- @on_success_type = on_success_type
17
- @on_failure_type = on_failure_type
18
- end
19
-
20
- def process(instance:)
21
- instance.append_railway_flow(@name)
22
- if specific_wrap?
23
- @klass.public_send(@method) do
24
- Decouplio::Processor.call(instance: instance, **@wrap_flow)
25
- end
26
- else
27
- Decouplio::Processor.call(instance: instance, **@wrap_flow)
28
- end
29
-
30
- resolve(instance: instance)
16
+ @wrap_block = wrap_block
17
+ @on_success = on_success
18
+ @on_failure = on_failure
19
+ @on_error = on_error
20
+ @finish_him = finish_him
31
21
  end
32
22
 
33
- private
34
-
35
- def specific_wrap?
36
- @klass && @method
37
- end
23
+ def process(instance)
24
+ instance.railway_flow << @name
38
25
 
39
- def resolve(instance:)
40
- result = instance.success?
26
+ next_step = @wrap_first_step
27
+ next_step = next_step.process(instance) while next_step
41
28
 
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
- )
29
+ if instance.success?
30
+ instance.success = @on_success_resolver
31
+ @on_success
32
+ else
33
+ instance.success = @on_failure_resolver
34
+ @on_failure
35
+ end
48
36
  end
49
37
  end
50
38
  end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decouplio
4
+ module Steps
5
+ class WrapWithClass < Decouplio::Steps::BaseWrap
6
+ def initialize(
7
+ name,
8
+ wrap_block,
9
+ wrap_class,
10
+ on_success,
11
+ on_failure,
12
+ on_error,
13
+ finish_him
14
+ )
15
+ super()
16
+ @name = name
17
+ @wrap_block = wrap_block
18
+ @wrap_class = wrap_class
19
+ @on_success = on_success
20
+ @on_failure = on_failure
21
+ @on_error = on_error
22
+ @finish_him = finish_him
23
+ end
24
+
25
+ def process(instance)
26
+ instance.railway_flow << @name
27
+
28
+ @wrap_class.call do
29
+ next_step = @wrap_first_step
30
+ next_step = next_step.process(instance) while next_step
31
+ end
32
+
33
+ if instance.success?
34
+ instance.success = @on_success_resolver
35
+ @on_success
36
+ else
37
+ instance.success = @on_failure_resolver
38
+ @on_failure
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decouplio
4
+ module Steps
5
+ class WrapWithClassMethod < Decouplio::Steps::BaseWrap
6
+ def initialize(
7
+ name,
8
+ wrap_block,
9
+ wrap_class,
10
+ wrap_method,
11
+ on_success,
12
+ on_failure,
13
+ on_error,
14
+ finish_him
15
+ )
16
+ super()
17
+ @name = name
18
+ @wrap_block = wrap_block
19
+ @wrap_class = wrap_class
20
+ @wrap_method = wrap_method
21
+ @on_success = on_success
22
+ @on_failure = on_failure
23
+ @on_error = on_error
24
+ @finish_him = finish_him
25
+ end
26
+
27
+ def process(instance)
28
+ instance.railway_flow << @name
29
+
30
+ @wrap_class.send(@wrap_method) do
31
+ next_step = @wrap_first_step
32
+ next_step = next_step.process(instance) while next_step
33
+ end
34
+
35
+ if instance.success?
36
+ instance.success = @on_success_resolver
37
+ @on_success
38
+ else
39
+ instance.success = @on_failure_resolver
40
+ @on_failure
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decouplio
4
+ module Utils
5
+ class PrepareResqMappings
6
+ def self.call(mappings)
7
+ prepared_mappings = {}
8
+ mappings.each do |handler_method, error_classes|
9
+ [error_classes].flatten.each do |error_class|
10
+ prepared_mappings[error_class] = handler_method
11
+ end
12
+ end
13
+ prepared_mappings
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Decouplio
4
- VERSION = '1.0.0alpha8'
4
+ VERSION = '1.0.0rc'
5
5
  end
data/lib/decouplio.rb CHANGED
@@ -1,6 +1,99 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'forwardable'
3
4
  require_relative 'decouplio/version'
5
+ require_relative 'decouplio/const/reserved_methods'
6
+ require_relative 'decouplio/const/types'
7
+ require_relative 'decouplio/const/error_messages'
8
+ require_relative 'decouplio/const/validations/common'
9
+ require_relative 'decouplio/const/validations/action_option_class'
10
+ require_relative 'decouplio/const/validations/step'
11
+ require_relative 'decouplio/const/validations/fail'
12
+ require_relative 'decouplio/const/validations/pass'
13
+ require_relative 'decouplio/const/validations/palp'
14
+ require_relative 'decouplio/const/validations/logic'
15
+ require_relative 'decouplio/const/validations/octo'
16
+ require_relative 'decouplio/const/validations/resq'
17
+ require_relative 'decouplio/const/validations/wrap'
18
+ require_relative 'decouplio/errors/base_error'
19
+ require_relative 'decouplio/errors/logic_redefinition_error'
20
+ require_relative 'decouplio/errors/logic_is_not_defined_error'
21
+ require_relative 'decouplio/errors/execution_error'
22
+ require_relative 'decouplio/errors/action_class_error'
23
+ require_relative 'decouplio/errors/step_definition_error'
24
+ require_relative 'decouplio/errors/extra_key_for_pass_error'
25
+ require_relative 'decouplio/errors/fail_finish_him_error'
26
+ require_relative 'decouplio/errors/invalid_error_class_error'
27
+ require_relative 'decouplio/errors/invalid_wrap_name_error'
28
+ require_relative 'decouplio/errors/pass_finish_him_error'
29
+ require_relative 'decouplio/errors/required_options_is_missing_for_octo_error'
30
+ require_relative 'decouplio/errors/resq_error_class_error'
31
+ require_relative 'decouplio/errors/resq_handler_method_error'
32
+ require_relative 'decouplio/errors/step_finish_him_error'
33
+ require_relative 'decouplio/errors/step_is_not_defined_for_step_error'
34
+ require_relative 'decouplio/errors/step_is_not_defined_for_fail_error'
35
+ require_relative 'decouplio/errors/step_is_not_defined_for_pass_error'
36
+ require_relative 'decouplio/errors/step_is_not_defined_for_wrap_error'
37
+ require_relative 'decouplio/errors/wrap_finish_him_error'
38
+ require_relative 'decouplio/errors/wrap_klass_method_error'
39
+ require_relative 'decouplio/errors/step_controversial_keys_error'
40
+ require_relative 'decouplio/errors/fail_controversial_keys_error'
41
+ require_relative 'decouplio/errors/pass_controversial_keys_error'
42
+ require_relative 'decouplio/errors/octo_controversial_keys_error'
43
+ require_relative 'decouplio/errors/octo_block_is_not_defined_error'
44
+ require_relative 'decouplio/errors/octo_case_is_not_defined_error'
45
+ require_relative 'decouplio/errors/octo_finish_him_is_not_allowed_error'
46
+ require_relative 'decouplio/errors/wrap_controversial_keys_error'
47
+ require_relative 'decouplio/errors/palp_validation_error'
48
+ require_relative 'decouplio/errors/step_name_error'
49
+ require_relative 'decouplio/errors/fail_can_not_be_first_step_error'
50
+ require_relative 'decouplio/errors/palp_block_is_not_defined_error'
51
+ require_relative 'decouplio/errors/resq_definition_error'
52
+ require_relative 'decouplio/errors/wrap_block_is_not_defined_error'
53
+ require_relative 'decouplio/errors/invalid_options_for_resq_step'
54
+ require_relative 'decouplio/errors/options_validation_error'
55
+ require_relative 'decouplio/octo_options_validator'
56
+ require_relative 'decouplio/utils/prepare_resq_mappings'
57
+ require_relative 'decouplio/steps/base_step'
58
+ require_relative 'decouplio/steps/base_inner_action'
59
+ require_relative 'decouplio/steps/base_service_step'
60
+ require_relative 'decouplio/steps/base_condition'
61
+ require_relative 'decouplio/steps/base_if_condition'
62
+ require_relative 'decouplio/steps/base_unless_condition'
63
+ require_relative 'decouplio/steps/base_octo'
64
+ require_relative 'decouplio/steps/base_resq'
65
+ require_relative 'decouplio/steps/base_resq_with_mapping'
66
+ require_relative 'decouplio/steps/base_wrap'
67
+ require_relative 'decouplio/steps/step'
68
+ require_relative 'decouplio/steps/fail'
69
+ require_relative 'decouplio/steps/pass'
70
+ require_relative 'decouplio/steps/inner_action_step'
71
+ require_relative 'decouplio/steps/inner_action_fail'
72
+ require_relative 'decouplio/steps/inner_action_pass'
73
+ require_relative 'decouplio/steps/service_as_step'
74
+ require_relative 'decouplio/steps/service_as_fail'
75
+ require_relative 'decouplio/steps/service_as_pass'
76
+ require_relative 'decouplio/steps/if_condition_pass'
77
+ require_relative 'decouplio/steps/if_condition_fail'
78
+ require_relative 'decouplio/steps/unless_condition_pass'
79
+ require_relative 'decouplio/steps/unless_condition_fail'
80
+ require_relative 'decouplio/steps/octo_by_key'
81
+ require_relative 'decouplio/steps/octo_by_method'
82
+ require_relative 'decouplio/steps/wrap'
83
+ require_relative 'decouplio/steps/wrap_with_class'
84
+ require_relative 'decouplio/steps/wrap_with_class_method'
85
+ require_relative 'decouplio/steps/resq_pass'
86
+ require_relative 'decouplio/steps/resq_fail'
87
+ require_relative 'decouplio/steps/resq_with_mapping_pass'
88
+ require_relative 'decouplio/steps/resq_with_mapping_fail'
89
+ require_relative 'decouplio/octo_hash_case'
90
+ require_relative 'decouplio/step_validator'
91
+ require_relative 'decouplio/new_flow'
92
+ require_relative 'decouplio/const/flows'
93
+ require_relative 'decouplio/default_meta_store'
94
+ require_relative 'decouplio/action_state_printer'
95
+ require_relative 'decouplio/ctx'
96
+ require_relative 'decouplio/logic_dsl'
4
97
  require_relative 'decouplio/action'
5
98
 
6
99
  module Decouplio
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.0alpha8
4
+ version: 1.0.0rc
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-08-01 00:00:00.000000000 Z
11
+ date: 2022-11-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -103,38 +103,17 @@ executables: []
103
103
  extensions: []
104
104
  extra_rdoc_files: []
105
105
  files:
106
- - ".circleci/config.yml"
107
- - ".dockerignore"
108
- - ".gitignore"
109
- - ".rspec"
110
- - ".rubocop.yml"
111
- - ".rubocop_todo.yml"
112
- - ".ruby-version"
113
- - ".vscode/settings.json"
114
- - Dockerfile
115
- - Gemfile
116
106
  - LICENSE
117
107
  - LICENSE.txt
118
108
  - README.md
119
109
  - Rakefile
120
- - benchmarks/.ruby-version
121
- - benchmarks/Dockerfile
122
- - benchmarks/Gemfile
123
- - benchmarks/multi_step_benchmark.rb
124
- - benchmarks/single_step_benchmark.rb
125
- - bin/console
126
- - bin/setup
127
110
  - decouplio.gemspec
128
- - docker-compose.yml
129
111
  - lib/decouplio.rb
130
112
  - lib/decouplio/action.rb
131
113
  - lib/decouplio/action_state_printer.rb
132
- - lib/decouplio/composer.rb
133
- - lib/decouplio/const/colors.rb
134
114
  - lib/decouplio/const/error_messages.rb
115
+ - lib/decouplio/const/flows.rb
135
116
  - lib/decouplio/const/reserved_methods.rb
136
- - lib/decouplio/const/results.rb
137
- - lib/decouplio/const/step_options.rb
138
117
  - lib/decouplio/const/types.rb
139
118
  - lib/decouplio/const/validations/action_option_class.rb
140
119
  - lib/decouplio/const/validations/common.rb
@@ -146,29 +125,26 @@ files:
146
125
  - lib/decouplio/const/validations/resq.rb
147
126
  - lib/decouplio/const/validations/step.rb
148
127
  - lib/decouplio/const/validations/wrap.rb
128
+ - lib/decouplio/ctx.rb
149
129
  - lib/decouplio/default_meta_store.rb
150
130
  - lib/decouplio/errors/action_class_error.rb
151
131
  - lib/decouplio/errors/base_error.rb
152
- - lib/decouplio/errors/error_store_error.rb
153
132
  - lib/decouplio/errors/execution_error.rb
154
- - lib/decouplio/errors/extra_key_for_fail_error.rb
155
- - lib/decouplio/errors/extra_key_for_octo_error.rb
156
133
  - lib/decouplio/errors/extra_key_for_pass_error.rb
157
- - lib/decouplio/errors/extra_key_for_resq_error.rb
158
- - lib/decouplio/errors/extra_key_for_step_error.rb
159
- - lib/decouplio/errors/extra_key_for_wrap_error.rb
160
134
  - lib/decouplio/errors/fail_can_not_be_first_step_error.rb
161
135
  - lib/decouplio/errors/fail_controversial_keys_error.rb
162
136
  - lib/decouplio/errors/fail_finish_him_error.rb
163
137
  - lib/decouplio/errors/invalid_error_class_error.rb
138
+ - lib/decouplio/errors/invalid_options_for_resq_step.rb
164
139
  - lib/decouplio/errors/invalid_wrap_name_error.rb
165
140
  - lib/decouplio/errors/logic_is_not_defined_error.rb
166
141
  - lib/decouplio/errors/logic_redefinition_error.rb
167
142
  - lib/decouplio/errors/octo_block_is_not_defined_error.rb
143
+ - lib/decouplio/errors/octo_case_is_not_defined_error.rb
168
144
  - lib/decouplio/errors/octo_controversial_keys_error.rb
145
+ - lib/decouplio/errors/octo_finish_him_is_not_allowed_error.rb
169
146
  - lib/decouplio/errors/options_validation_error.rb
170
147
  - lib/decouplio/errors/palp_block_is_not_defined_error.rb
171
- - lib/decouplio/errors/palp_is_not_defined_error.rb
172
148
  - lib/decouplio/errors/palp_validation_error.rb
173
149
  - lib/decouplio/errors/pass_controversial_keys_error.rb
174
150
  - lib/decouplio/errors/pass_finish_him_error.rb
@@ -177,6 +153,7 @@ files:
177
153
  - lib/decouplio/errors/resq_error_class_error.rb
178
154
  - lib/decouplio/errors/resq_handler_method_error.rb
179
155
  - lib/decouplio/errors/step_controversial_keys_error.rb
156
+ - lib/decouplio/errors/step_definition_error.rb
180
157
  - lib/decouplio/errors/step_finish_him_error.rb
181
158
  - lib/decouplio/errors/step_is_not_defined_for_fail_error.rb
182
159
  - lib/decouplio/errors/step_is_not_defined_for_pass_error.rb
@@ -187,41 +164,52 @@ files:
187
164
  - lib/decouplio/errors/wrap_controversial_keys_error.rb
188
165
  - lib/decouplio/errors/wrap_finish_him_error.rb
189
166
  - lib/decouplio/errors/wrap_klass_method_error.rb
190
- - lib/decouplio/flow.rb
167
+ - lib/decouplio/graph.rb
191
168
  - lib/decouplio/logic_dsl.rb
169
+ - lib/decouplio/new_flow.rb
192
170
  - lib/decouplio/octo_hash_case.rb
193
171
  - lib/decouplio/octo_options_validator.rb
194
- - lib/decouplio/options_validator.rb
195
- - lib/decouplio/processor.rb
172
+ - lib/decouplio/step_validator.rb
173
+ - lib/decouplio/steps/base_condition.rb
174
+ - lib/decouplio/steps/base_if_condition.rb
175
+ - lib/decouplio/steps/base_inner_action.rb
176
+ - lib/decouplio/steps/base_octo.rb
196
177
  - lib/decouplio/steps/base_resq.rb
178
+ - lib/decouplio/steps/base_resq_with_mapping.rb
179
+ - lib/decouplio/steps/base_service_step.rb
197
180
  - lib/decouplio/steps/base_step.rb
181
+ - lib/decouplio/steps/base_unless_condition.rb
182
+ - lib/decouplio/steps/base_wrap.rb
198
183
  - lib/decouplio/steps/fail.rb
199
184
  - lib/decouplio/steps/if_condition_fail.rb
200
185
  - lib/decouplio/steps/if_condition_pass.rb
201
186
  - lib/decouplio/steps/inner_action_fail.rb
202
187
  - lib/decouplio/steps/inner_action_pass.rb
203
188
  - lib/decouplio/steps/inner_action_step.rb
204
- - lib/decouplio/steps/octo.rb
189
+ - lib/decouplio/steps/octo_by_key.rb
190
+ - lib/decouplio/steps/octo_by_method.rb
205
191
  - lib/decouplio/steps/pass.rb
206
192
  - lib/decouplio/steps/resq_fail.rb
207
193
  - lib/decouplio/steps/resq_pass.rb
208
- - lib/decouplio/steps/service_fail.rb
209
- - lib/decouplio/steps/service_pass.rb
210
- - lib/decouplio/steps/service_step.rb
211
- - lib/decouplio/steps/shared/fail_resolver.rb
212
- - lib/decouplio/steps/shared/step_resolver.rb
194
+ - lib/decouplio/steps/resq_with_mapping_fail.rb
195
+ - lib/decouplio/steps/resq_with_mapping_pass.rb
196
+ - lib/decouplio/steps/service_as_fail.rb
197
+ - lib/decouplio/steps/service_as_pass.rb
198
+ - lib/decouplio/steps/service_as_step.rb
213
199
  - lib/decouplio/steps/step.rb
214
200
  - lib/decouplio/steps/unless_condition_fail.rb
215
201
  - lib/decouplio/steps/unless_condition_pass.rb
216
202
  - lib/decouplio/steps/wrap.rb
217
- - lib/decouplio/validators/condition.rb
203
+ - lib/decouplio/steps/wrap_with_class.rb
204
+ - lib/decouplio/steps/wrap_with_class_method.rb
205
+ - lib/decouplio/utils/prepare_resq_mappings.rb
218
206
  - lib/decouplio/version.rb
219
207
  homepage: https://differencialx.github.io/decouplio.github.io/
220
208
  licenses:
221
209
  - MIT
222
210
  metadata:
223
211
  homepage_uri: https://differencialx.github.io/decouplio.github.io/
224
- source_code_uri: https://github.com/differencialx/decouplio/blob/master/docs
212
+ source_code_uri: https://github.com/differencialx/decouplio/
225
213
  changelog_uri: https://github.com/differencialx/decouplio/blob/master/docs/CHANGELOG.md
226
214
  post_install_message:
227
215
  rdoc_options: []
data/.circleci/config.yml DELETED
@@ -1,63 +0,0 @@
1
- version: 2.1
2
-
3
- executors:
4
- test_executor:
5
- docker:
6
- - image: cimg/ruby:${RUBY_VERSION}
7
- working_directory: ~/decouplio
8
-
9
- jobs:
10
- build:
11
- environment:
12
- RUBY_VERSION: << parameters.ruby_version >>
13
- working_directory: ~/decouplio
14
- executor: test_executor
15
- parameters:
16
- ruby_version:
17
- type: string
18
- bundler_version:
19
- type: string
20
- steps:
21
- - checkout
22
-
23
- - run:
24
- name: Install bundler
25
- command: gem install bundler:<< parameters.bundler_version >>
26
-
27
- - run:
28
- name: Install dependencies
29
- command: bundle check --path=vendor/bundle || bundle install --path=vendor/bundle --jobs 4 --retry 3
30
-
31
- - run:
32
- name: Run Rubocop
33
- command: bundle exec rubocop -P
34
-
35
- - run:
36
- name: Run Tests
37
- command: bundle exec rspec
38
-
39
- workflows:
40
- build_and_test:
41
- jobs:
42
- - build:
43
- name: 'ruby 2.7.0'
44
- ruby_version: 2.7.0
45
- bundler_version: 2.1.4
46
- - build:
47
- name: 'ruby 2.7.5'
48
- ruby_version: 2.7.5
49
- bundler_version: 2.1.4
50
- - build:
51
- name: 'ruby 3.0.3'
52
- ruby_version: 3.0.3
53
- bundler_version: 2.2.32
54
- # TODO: Currently rspec-mocks has some issue, or maybe decouplio has an issue
55
- # needs to be investigated
56
- # 3 specs are failing
57
- # rspec ./spec/resq_spec.rb:174
58
- # rspec ./spec/resq_spec.rb:286
59
- # rspec ./spec/resq_spec.rb:398
60
- # - build:
61
- # name: 'ruby 3.1.2'
62
- # ruby_version: 3.1.2
63
- # bundler_version: 2.2.32
data/.dockerignore DELETED
@@ -1,12 +0,0 @@
1
- .circleci
2
- .vscode
3
- examples
4
- vendor
5
-
6
- .rspec_status
7
- .rubocop_todo.yml
8
- .ruby-version
9
- .travis.yml
10
- LICENSE
11
- LICENSE.txt
12
- README.md
data/.gitignore DELETED
@@ -1,13 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /_yardoc/
4
- /coverage/
5
- /doc/
6
- /pkg/
7
- /spec/reports/
8
- /tmp/
9
-
10
- # rspec failure tracking
11
- .rspec_status
12
- .ruby-gemset
13
- Gemfile.lock
data/.rspec DELETED
@@ -1,3 +0,0 @@
1
- --format documentation
2
- --color
3
- --require spec_helper