decouplio 1.0.0alpha7 → 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 (143) 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 +34 -74
  5. data/lib/decouplio/action_state_printer.rb +34 -0
  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 +1 -165
  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 +37 -0
  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 +337 -107
  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 -33
  71. data/lib/decouplio/steps/inner_action_pass.rb +12 -30
  72. data/lib/decouplio/steps/inner_action_step.rb +1 -33
  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 +32 -55
  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 -116
  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 -691
  112. data/lib/decouplio/const/colors.rb +0 -25
  113. data/lib/decouplio/const/doby_aide_options.rb +0 -16
  114. data/lib/decouplio/const/results.rb +0 -15
  115. data/lib/decouplio/const/step_options.rb +0 -16
  116. data/lib/decouplio/const/validations/aide.rb +0 -38
  117. data/lib/decouplio/const/validations/doby.rb +0 -36
  118. data/lib/decouplio/default_error_handler.rb +0 -39
  119. data/lib/decouplio/errors/aide_can_not_be_first_step_error.rb +0 -18
  120. data/lib/decouplio/errors/aide_controversial_keys_error.rb +0 -26
  121. data/lib/decouplio/errors/aide_finish_him_error.rb +0 -26
  122. data/lib/decouplio/errors/doby_controversial_keys_error.rb +0 -26
  123. data/lib/decouplio/errors/doby_finish_him_error.rb +0 -26
  124. data/lib/decouplio/errors/extra_key_for_fail_error.rb +0 -26
  125. data/lib/decouplio/errors/extra_key_for_octo_error.rb +0 -26
  126. data/lib/decouplio/errors/extra_key_for_resq_error.rb +0 -29
  127. data/lib/decouplio/errors/extra_key_for_step_error.rb +0 -23
  128. data/lib/decouplio/errors/extra_key_for_wrap_error.rb +0 -23
  129. data/lib/decouplio/errors/palp_is_not_defined_error.rb +0 -26
  130. data/lib/decouplio/errors/step_is_not_defined_for_aide_error.rb +0 -26
  131. data/lib/decouplio/errors/step_is_not_defined_for_doby_error.rb +0 -27
  132. data/lib/decouplio/flow.rb +0 -17
  133. data/lib/decouplio/options_validator.rb +0 -716
  134. data/lib/decouplio/processor.rb +0 -20
  135. data/lib/decouplio/steps/aide.rb +0 -37
  136. data/lib/decouplio/steps/doby.rb +0 -37
  137. data/lib/decouplio/steps/octo.rb +0 -27
  138. data/lib/decouplio/steps/service_fail.rb +0 -41
  139. data/lib/decouplio/steps/service_pass.rb +0 -41
  140. data/lib/decouplio/steps/service_step.rb +0 -41
  141. data/lib/decouplio/steps/shared/fail_resolver.rb +0 -40
  142. data/lib/decouplio/steps/shared/step_resolver.rb +0 -43
  143. data/lib/decouplio/validators/condition.rb +0 -59
@@ -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.0alpha7'
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.0alpha7
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-07-26 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,43 +103,20 @@ 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
- - lib/decouplio/composer.rb
132
- - lib/decouplio/const/colors.rb
133
- - lib/decouplio/const/doby_aide_options.rb
113
+ - lib/decouplio/action_state_printer.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
- - lib/decouplio/const/validations/aide.rb
141
119
  - lib/decouplio/const/validations/common.rb
142
- - lib/decouplio/const/validations/doby.rb
143
120
  - lib/decouplio/const/validations/fail.rb
144
121
  - lib/decouplio/const/validations/logic.rb
145
122
  - lib/decouplio/const/validations/octo.rb
@@ -148,34 +125,26 @@ files:
148
125
  - lib/decouplio/const/validations/resq.rb
149
126
  - lib/decouplio/const/validations/step.rb
150
127
  - lib/decouplio/const/validations/wrap.rb
151
- - lib/decouplio/default_error_handler.rb
128
+ - lib/decouplio/ctx.rb
129
+ - lib/decouplio/default_meta_store.rb
152
130
  - lib/decouplio/errors/action_class_error.rb
153
- - lib/decouplio/errors/aide_can_not_be_first_step_error.rb
154
- - lib/decouplio/errors/aide_controversial_keys_error.rb
155
- - lib/decouplio/errors/aide_finish_him_error.rb
156
131
  - lib/decouplio/errors/base_error.rb
157
- - lib/decouplio/errors/doby_controversial_keys_error.rb
158
- - lib/decouplio/errors/doby_finish_him_error.rb
159
- - lib/decouplio/errors/error_store_error.rb
160
132
  - lib/decouplio/errors/execution_error.rb
161
- - lib/decouplio/errors/extra_key_for_fail_error.rb
162
- - lib/decouplio/errors/extra_key_for_octo_error.rb
163
133
  - lib/decouplio/errors/extra_key_for_pass_error.rb
164
- - lib/decouplio/errors/extra_key_for_resq_error.rb
165
- - lib/decouplio/errors/extra_key_for_step_error.rb
166
- - lib/decouplio/errors/extra_key_for_wrap_error.rb
167
134
  - lib/decouplio/errors/fail_can_not_be_first_step_error.rb
168
135
  - lib/decouplio/errors/fail_controversial_keys_error.rb
169
136
  - lib/decouplio/errors/fail_finish_him_error.rb
170
137
  - lib/decouplio/errors/invalid_error_class_error.rb
138
+ - lib/decouplio/errors/invalid_options_for_resq_step.rb
171
139
  - lib/decouplio/errors/invalid_wrap_name_error.rb
172
140
  - lib/decouplio/errors/logic_is_not_defined_error.rb
173
141
  - lib/decouplio/errors/logic_redefinition_error.rb
174
142
  - lib/decouplio/errors/octo_block_is_not_defined_error.rb
143
+ - lib/decouplio/errors/octo_case_is_not_defined_error.rb
175
144
  - lib/decouplio/errors/octo_controversial_keys_error.rb
145
+ - lib/decouplio/errors/octo_finish_him_is_not_allowed_error.rb
176
146
  - lib/decouplio/errors/options_validation_error.rb
177
147
  - lib/decouplio/errors/palp_block_is_not_defined_error.rb
178
- - lib/decouplio/errors/palp_is_not_defined_error.rb
179
148
  - lib/decouplio/errors/palp_validation_error.rb
180
149
  - lib/decouplio/errors/pass_controversial_keys_error.rb
181
150
  - lib/decouplio/errors/pass_finish_him_error.rb
@@ -184,9 +153,8 @@ files:
184
153
  - lib/decouplio/errors/resq_error_class_error.rb
185
154
  - lib/decouplio/errors/resq_handler_method_error.rb
186
155
  - lib/decouplio/errors/step_controversial_keys_error.rb
156
+ - lib/decouplio/errors/step_definition_error.rb
187
157
  - lib/decouplio/errors/step_finish_him_error.rb
188
- - lib/decouplio/errors/step_is_not_defined_for_aide_error.rb
189
- - lib/decouplio/errors/step_is_not_defined_for_doby_error.rb
190
158
  - lib/decouplio/errors/step_is_not_defined_for_fail_error.rb
191
159
  - lib/decouplio/errors/step_is_not_defined_for_pass_error.rb
192
160
  - lib/decouplio/errors/step_is_not_defined_for_step_error.rb
@@ -196,43 +164,52 @@ files:
196
164
  - lib/decouplio/errors/wrap_controversial_keys_error.rb
197
165
  - lib/decouplio/errors/wrap_finish_him_error.rb
198
166
  - lib/decouplio/errors/wrap_klass_method_error.rb
199
- - lib/decouplio/flow.rb
167
+ - lib/decouplio/graph.rb
200
168
  - lib/decouplio/logic_dsl.rb
169
+ - lib/decouplio/new_flow.rb
201
170
  - lib/decouplio/octo_hash_case.rb
202
171
  - lib/decouplio/octo_options_validator.rb
203
- - lib/decouplio/options_validator.rb
204
- - lib/decouplio/processor.rb
205
- - lib/decouplio/steps/aide.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
206
177
  - lib/decouplio/steps/base_resq.rb
178
+ - lib/decouplio/steps/base_resq_with_mapping.rb
179
+ - lib/decouplio/steps/base_service_step.rb
207
180
  - lib/decouplio/steps/base_step.rb
208
- - lib/decouplio/steps/doby.rb
181
+ - lib/decouplio/steps/base_unless_condition.rb
182
+ - lib/decouplio/steps/base_wrap.rb
209
183
  - lib/decouplio/steps/fail.rb
210
184
  - lib/decouplio/steps/if_condition_fail.rb
211
185
  - lib/decouplio/steps/if_condition_pass.rb
212
186
  - lib/decouplio/steps/inner_action_fail.rb
213
187
  - lib/decouplio/steps/inner_action_pass.rb
214
188
  - lib/decouplio/steps/inner_action_step.rb
215
- - lib/decouplio/steps/octo.rb
189
+ - lib/decouplio/steps/octo_by_key.rb
190
+ - lib/decouplio/steps/octo_by_method.rb
216
191
  - lib/decouplio/steps/pass.rb
217
192
  - lib/decouplio/steps/resq_fail.rb
218
193
  - lib/decouplio/steps/resq_pass.rb
219
- - lib/decouplio/steps/service_fail.rb
220
- - lib/decouplio/steps/service_pass.rb
221
- - lib/decouplio/steps/service_step.rb
222
- - lib/decouplio/steps/shared/fail_resolver.rb
223
- - 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
224
199
  - lib/decouplio/steps/step.rb
225
200
  - lib/decouplio/steps/unless_condition_fail.rb
226
201
  - lib/decouplio/steps/unless_condition_pass.rb
227
202
  - lib/decouplio/steps/wrap.rb
228
- - 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
229
206
  - lib/decouplio/version.rb
230
207
  homepage: https://differencialx.github.io/decouplio.github.io/
231
208
  licenses:
232
209
  - MIT
233
210
  metadata:
234
211
  homepage_uri: https://differencialx.github.io/decouplio.github.io/
235
- source_code_uri: https://github.com/differencialx/decouplio/blob/master/docs
212
+ source_code_uri: https://github.com/differencialx/decouplio/
236
213
  changelog_uri: https://github.com/differencialx/decouplio/blob/master/docs/CHANGELOG.md
237
214
  post_install_message:
238
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