trailblazer-activity-dsl-linear 1.1.0 → 1.2.1
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.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +2 -5
- data/CHANGES.md +76 -0
- data/Gemfile +6 -3
- data/lib/trailblazer/activity/dsl/linear/feature/merge.rb +2 -2
- data/lib/trailblazer/activity/dsl/linear/feature/patch.rb +9 -9
- data/lib/trailblazer/activity/dsl/linear/feature/variable_mapping/dsl.rb +26 -32
- data/lib/trailblazer/activity/dsl/linear/feature/variable_mapping/runtime.rb +6 -8
- data/lib/trailblazer/activity/dsl/linear/feature/variable_mapping.rb +25 -35
- data/lib/trailblazer/activity/dsl/linear/helper/path.rb +37 -18
- data/lib/trailblazer/activity/dsl/linear/helper.rb +27 -18
- data/lib/trailblazer/activity/dsl/linear/normalizer/extensions.rb +63 -0
- data/lib/trailblazer/activity/dsl/linear/normalizer/inherit.rb +90 -0
- data/lib/trailblazer/activity/dsl/linear/normalizer/output_tuples.rb +160 -0
- data/lib/trailblazer/activity/dsl/linear/normalizer/terminus.rb +26 -29
- data/lib/trailblazer/activity/dsl/linear/normalizer.rb +96 -148
- data/lib/trailblazer/activity/dsl/linear/sequence/builder.rb +3 -2
- data/lib/trailblazer/activity/dsl/linear/sequence/compiler.rb +21 -17
- data/lib/trailblazer/activity/dsl/linear/sequence/search.rb +2 -8
- data/lib/trailblazer/activity/dsl/linear/strategy.rb +17 -17
- data/lib/trailblazer/activity/dsl/linear/version.rb +1 -1
- data/lib/trailblazer/activity/dsl/linear.rb +12 -1
- data/lib/trailblazer/activity/fast_track.rb +91 -54
- data/lib/trailblazer/activity/path.rb +22 -29
- data/lib/trailblazer/activity/railway.rb +60 -54
- data/trailblazer-activity-dsl-linear.gemspec +6 -8
- metadata +23 -38
- data/.github/workflows/ci_jruby.yml +0 -19
- data/.github/workflows/ci_legacy.yml +0 -19
- data/.github/workflows/ci_truffleruby.yml +0 -19
- data/lib/trailblazer/activity/dsl/linear/feature/variable_mapping/inherit.rb +0 -38
@@ -2,63 +2,120 @@ module Trailblazer
|
|
2
2
|
class Activity
|
3
3
|
# Implementation of the "FastTrack" layout that is also used for `Operation`.
|
4
4
|
class FastTrack < Activity::DSL::Linear::Strategy
|
5
|
-
|
6
5
|
# Signals
|
7
6
|
FailFast = Class.new(Signal)
|
8
7
|
PassFast = Class.new(Signal)
|
9
8
|
|
10
9
|
module DSL
|
11
10
|
Linear = Activity::DSL::Linear
|
11
|
+
# The connector logic needs to be run before Railway's connector logic:
|
12
|
+
PREPEND_TO = "activity.path_helper.path_to_track"
|
12
13
|
|
13
14
|
module_function
|
14
15
|
|
15
|
-
def Normalizer(
|
16
|
-
|
17
|
-
|
18
|
-
"
|
16
|
+
def Normalizer(prepend_to_default_outputs: [], base_normalizer_builder: Railway::DSL.method(:Normalizer))
|
17
|
+
fast_track_output_steps = {
|
18
|
+
"fast_track.pass_fast_output" => Linear::Normalizer.Task(method(:add_pass_fast_output)),
|
19
|
+
"fast_track.fail_fast_output" => Linear::Normalizer.Task(method(:add_fail_fast_output)),
|
20
|
+
"fast_track.fast_track_outputs" => Linear::Normalizer.Task(method(:add_fast_track_outputs)),
|
21
|
+
}
|
22
|
+
|
23
|
+
# Retrieve the base normalizer from {linear/normalizer.rb} and add processing steps.
|
24
|
+
step_normalizer = base_normalizer_builder.call( # E.g Railway::DSL.NormalizerForPass.
|
25
|
+
prepend_to_default_outputs: [fast_track_output_steps, *prepend_to_default_outputs]
|
26
|
+
)
|
19
27
|
|
28
|
+
_normalizer = Linear::Normalizer.prepend_to(
|
29
|
+
step_normalizer,
|
30
|
+
PREPEND_TO,
|
20
31
|
{
|
21
|
-
"fast_track.
|
22
|
-
"fast_track.
|
23
|
-
"fast_track.
|
32
|
+
"fast_track.record_options" => Linear::Normalizer.Task(method(:record_options)),
|
33
|
+
"fast_track.pass_fast_option" => Linear::Normalizer.Task(method(:pass_fast_option)),
|
34
|
+
"fast_track.fail_fast_option" => Linear::Normalizer.Task(method(:fail_fast_option)),
|
35
|
+
"fast_track.fast_track_option" => Linear::Normalizer.Task(method(:add_fast_track_connectors)),
|
24
36
|
}
|
25
37
|
)
|
26
38
|
end
|
27
39
|
|
28
|
-
|
29
|
-
|
40
|
+
module Fail
|
41
|
+
module_function
|
30
42
|
|
31
|
-
|
32
|
-
pipeline
|
33
|
-
"activity.wirings",
|
43
|
+
def Normalizer
|
44
|
+
pipeline = DSL.Normalizer(base_normalizer_builder: Railway::DSL::Fail.method(:Normalizer))
|
34
45
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
46
|
+
Linear::Normalizer.prepend_to(
|
47
|
+
pipeline,
|
48
|
+
PREPEND_TO,
|
49
|
+
{
|
50
|
+
"fast_track.fail_fast_option_for_fail" => Linear::Normalizer.Task(DSL.method(:fail_fast_option_for_fail)),
|
51
|
+
}
|
52
|
+
)
|
53
|
+
end
|
39
54
|
end
|
40
55
|
|
41
|
-
|
42
|
-
|
56
|
+
module Pass
|
57
|
+
module_function
|
43
58
|
|
44
|
-
|
45
|
-
pipeline
|
46
|
-
"activity.wirings",
|
59
|
+
def Normalizer
|
60
|
+
pipeline = DSL.Normalizer(base_normalizer_builder: Railway::DSL::Pass.method(:Normalizer))
|
47
61
|
|
48
|
-
|
49
|
-
|
50
|
-
|
62
|
+
Linear::Normalizer.prepend_to(
|
63
|
+
pipeline,
|
64
|
+
PREPEND_TO,
|
65
|
+
{
|
66
|
+
"fast_track.pass_fast_option_for_pass" => Linear::Normalizer.Task(DSL.method(:pass_fast_option_for_pass)),
|
67
|
+
}
|
68
|
+
)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
# inherit: true
|
73
|
+
RECORD_OPTIONS = [:pass_fast, :fail_fast, :fast_track]
|
74
|
+
|
75
|
+
# *If* {fast_track: true} (or :pass_fast or :fail_fast), record it using Normalizer::Inherit mechanics.
|
76
|
+
def record_options(ctx, non_symbol_options:, **)
|
77
|
+
recorded_options =
|
78
|
+
RECORD_OPTIONS.collect { |option| ctx.key?(option) ? [option, ctx[option]] : nil }
|
79
|
+
.compact
|
80
|
+
.to_h
|
81
|
+
|
82
|
+
ctx.merge!(
|
83
|
+
non_symbol_options: non_symbol_options.merge(
|
84
|
+
Linear::Normalizer::Inherit.Record(recorded_options, type: :fast_track, non_symbol_options: false)
|
85
|
+
)
|
51
86
|
)
|
52
87
|
end
|
53
88
|
|
89
|
+
def add_pass_fast_output(ctx, outputs:, pass_fast: nil, **)
|
90
|
+
return unless pass_fast
|
91
|
+
|
92
|
+
ctx[:outputs] = PASS_FAST_OUTPUT.merge(outputs)
|
93
|
+
end
|
94
|
+
|
95
|
+
def add_fail_fast_output(ctx, outputs:, fail_fast: nil, **)
|
96
|
+
return unless fail_fast
|
97
|
+
|
98
|
+
ctx[:outputs] = FAIL_FAST_OUTPUT.merge(outputs)
|
99
|
+
end
|
100
|
+
|
101
|
+
def add_fast_track_outputs(ctx, outputs:, fast_track: nil, **)
|
102
|
+
return unless fast_track
|
103
|
+
|
104
|
+
ctx[:outputs] = FAIL_FAST_OUTPUT.merge(PASS_FAST_OUTPUT).merge(outputs)
|
105
|
+
end
|
106
|
+
|
107
|
+
PASS_FAST_OUTPUT = {pass_fast: Activity.Output(Activity::FastTrack::PassFast, :pass_fast)}
|
108
|
+
FAIL_FAST_OUTPUT = {fail_fast: Activity.Output(Activity::FastTrack::FailFast, :fail_fast)}
|
109
|
+
|
110
|
+
def add_fast_track_connectors(ctx, fast_track: nil, **)
|
111
|
+
ctx = merge_connections_for!(ctx, :fast_track, :pass_fast, :pass_fast, **ctx)
|
112
|
+
ctx = merge_connections_for!(ctx, :fast_track, :fail_fast, :fail_fast, **ctx)
|
113
|
+
end
|
114
|
+
|
54
115
|
def pass_fast_option(ctx, **)
|
55
116
|
ctx = merge_connections_for!(ctx, :pass_fast, :success, **ctx)
|
56
117
|
|
57
118
|
ctx = merge_connections_for!(ctx, :pass_fast, :pass_fast, :pass_fast, **ctx)
|
58
|
-
ctx = merge_outputs_for!(ctx,
|
59
|
-
{pass_fast: Activity.Output(Activity::FastTrack::PassFast, :pass_fast)},
|
60
|
-
**ctx
|
61
|
-
)
|
62
119
|
end
|
63
120
|
|
64
121
|
def pass_fast_option_for_pass(ctx, **)
|
@@ -70,10 +127,6 @@ module Trailblazer
|
|
70
127
|
ctx = merge_connections_for!(ctx, :fail_fast, :failure, **ctx)
|
71
128
|
|
72
129
|
ctx = merge_connections_for!(ctx, :fail_fast, :fail_fast, :fail_fast, **ctx)
|
73
|
-
ctx = merge_outputs_for!(ctx,
|
74
|
-
{fail_fast: Activity.Output(Activity::FastTrack::FailFast, :fail_fast)},
|
75
|
-
**ctx
|
76
|
-
)
|
77
130
|
end
|
78
131
|
|
79
132
|
def fail_fast_option_for_fail(ctx, **)
|
@@ -81,36 +134,20 @@ module Trailblazer
|
|
81
134
|
ctx = merge_connections_for!(ctx, :fail_fast, :success, **ctx)
|
82
135
|
end
|
83
136
|
|
84
|
-
def
|
85
|
-
return unless fast_track
|
86
|
-
|
87
|
-
ctx = merge_connections_for!(ctx, :fast_track, :fail_fast, :fail_fast, **ctx)
|
88
|
-
ctx = merge_connections_for!(ctx, :fast_track, :pass_fast, :pass_fast, **ctx)
|
89
|
-
|
90
|
-
ctx = merge_outputs_for!(ctx,
|
91
|
-
{pass_fast: Activity.Output(Activity::FastTrack::PassFast, :pass_fast),
|
92
|
-
fail_fast: Activity.Output(Activity::FastTrack::FailFast, :fail_fast)},
|
93
|
-
**ctx
|
94
|
-
)
|
95
|
-
end
|
96
|
-
|
97
|
-
def merge_connections_for!(ctx, option_name, semantic, magnetic_to=option_name, connections:, **)
|
137
|
+
def merge_connections_for!(ctx, option_name, semantic, magnetic_to=option_name, non_symbol_options:, **)
|
98
138
|
return ctx unless ctx[option_name]
|
99
139
|
|
100
|
-
|
101
|
-
ctx
|
102
|
-
end
|
140
|
+
connector = {Linear::Normalizer::OutputTuples.Output(semantic) => Linear::Strategy.Track(magnetic_to)}
|
103
141
|
|
104
|
-
|
105
|
-
ctx[:outputs] = new_outputs.merge(outputs)
|
142
|
+
ctx[:non_symbol_options] = connector.merge(non_symbol_options)
|
106
143
|
ctx
|
107
144
|
end
|
108
145
|
|
109
146
|
# Normalizer pipelines taking care of processing your DSL options.
|
110
147
|
Normalizers = Linear::Normalizer::Normalizers.new(
|
111
148
|
step: FastTrack::DSL.Normalizer(),
|
112
|
-
fail: FastTrack::DSL.
|
113
|
-
pass: FastTrack::DSL.
|
149
|
+
fail: FastTrack::DSL::Fail.Normalizer(),
|
150
|
+
pass: FastTrack::DSL::Pass.Normalizer(),
|
114
151
|
terminus: Linear::Normalizer::Terminus.Normalizer(),
|
115
152
|
)
|
116
153
|
|
@@ -5,39 +5,43 @@ module Trailblazer
|
|
5
5
|
# Functions that help creating a path-specific sequence.
|
6
6
|
module DSL
|
7
7
|
Linear = Activity::DSL::Linear
|
8
|
+
# Always prepend all "add connectors" steps of all normalizers to normalize_output_tuples.
|
9
|
+
# This assures that the order is
|
10
|
+
# [<default tuples>, <inherited tuples>, <user tuples>]
|
11
|
+
PREPEND_TO = "output_tuples.normalize_output_tuples"
|
8
12
|
|
9
13
|
module_function
|
10
14
|
|
11
|
-
def Normalizer
|
15
|
+
def Normalizer(prepend_to_default_outputs: [])
|
16
|
+
path_output_steps = {
|
17
|
+
"path.outputs" => Linear::Normalizer.Task(method(:add_success_output))
|
18
|
+
}
|
19
|
+
|
12
20
|
# Retrieve the base normalizer from {linear/normalizer.rb} and add processing steps.
|
13
|
-
dsl_normalizer = Linear::Normalizer.Normalizer(
|
21
|
+
dsl_normalizer = Linear::Normalizer.Normalizer(
|
22
|
+
prepend_to_default_outputs: [*prepend_to_default_outputs, path_output_steps]
|
23
|
+
)
|
14
24
|
|
15
25
|
Linear::Normalizer.prepend_to(
|
16
26
|
dsl_normalizer,
|
17
|
-
|
18
|
-
"activity.normalize_outputs_from_dsl",
|
27
|
+
PREPEND_TO,
|
19
28
|
{
|
20
|
-
"path.
|
21
|
-
"path.
|
22
|
-
"path.magnetic_to" => Linear::Normalizer.Task(method(:normalize_magnetic_to)),
|
29
|
+
"path.step.add_success_connector" => Linear::Normalizer.Task(method(:add_success_connector)),
|
30
|
+
"path.magnetic_to" => Linear::Normalizer.Task(method(:normalize_magnetic_to)),
|
23
31
|
}
|
24
32
|
)
|
25
33
|
end
|
26
34
|
|
27
|
-
|
28
|
-
{success: Activity::Output(Activity::Right, :success)}
|
29
|
-
end
|
35
|
+
SUCCESS_OUTPUT = {success: Activity::Output(Activity::Right, :success)}
|
30
36
|
|
31
|
-
def
|
32
|
-
|
37
|
+
def add_success_output(ctx, **)
|
38
|
+
ctx[:outputs] = SUCCESS_OUTPUT
|
33
39
|
end
|
34
40
|
|
35
|
-
def
|
36
|
-
|
37
|
-
end
|
41
|
+
def add_success_connector(ctx, track_name:, non_symbol_options:, **)
|
42
|
+
connectors = {Linear::Normalizer::OutputTuples.Output(:success) => Linear::Strategy.Track(track_name)}
|
38
43
|
|
39
|
-
|
40
|
-
ctx[:connections] = connections || unary_connections(track_name: track_name)
|
44
|
+
ctx[:non_symbol_options] = connectors.merge(non_symbol_options)
|
41
45
|
end
|
42
46
|
|
43
47
|
def normalize_magnetic_to(ctx, track_name:, **) # TODO: merge with Railway.merge_magnetic_to
|
@@ -57,7 +61,7 @@ module Trailblazer
|
|
57
61
|
|
58
62
|
# @private
|
59
63
|
def start_sequence(track_name:)
|
60
|
-
Linear::Strategy::DSL.start_sequence(wirings: [Linear::Sequence::Search::Forward(
|
64
|
+
Linear::Strategy::DSL.start_sequence(wirings: [Linear::Sequence::Search::Forward(SUCCESS_OUTPUT[:success], track_name)])
|
61
65
|
end
|
62
66
|
|
63
67
|
def options_for_sequence_build(track_name: :success, end_task: Activity::End.new(semantic: :success), end_id: "End.success", **)
|
@@ -85,14 +89,3 @@ module Trailblazer
|
|
85
89
|
end
|
86
90
|
end
|
87
91
|
end
|
88
|
-
|
89
|
-
=begin
|
90
|
-
class Operation
|
91
|
-
def self.subclassed(track_name:) # FIXME: it should be run in SubOperation context.
|
92
|
-
# initialize code here
|
93
|
-
end
|
94
|
-
|
95
|
-
end
|
96
|
-
|
97
|
-
SubOperation = Class.new(Operation, track_name: :green)
|
98
|
-
=end
|
@@ -1,97 +1,103 @@
|
|
1
1
|
module Trailblazer
|
2
2
|
class Activity
|
3
3
|
class Railway < DSL::Linear::Strategy
|
4
|
-
|
5
4
|
module DSL
|
6
5
|
Linear = Activity::DSL::Linear
|
7
6
|
|
8
7
|
module_function
|
9
8
|
|
10
|
-
def Normalizer
|
11
|
-
|
9
|
+
def Normalizer(prepend_to_default_outputs: [])
|
10
|
+
railway_output_steps = {
|
11
|
+
"railway.outputs" => Linear::Normalizer.Task(method(:add_failure_output)),
|
12
|
+
}
|
12
13
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
{
|
17
|
-
"railway.outputs" => Linear::Normalizer.Task(method(:normalize_path_outputs)),
|
18
|
-
"railway.connections" => Linear::Normalizer.Task(method(:normalize_path_connections)),
|
19
|
-
},
|
14
|
+
# Retrieve the base normalizer from {linear/normalizer.rb} and add processing steps.
|
15
|
+
step_normalizer = Path::DSL.Normalizer(
|
16
|
+
prepend_to_default_outputs: [railway_output_steps, *prepend_to_default_outputs]
|
20
17
|
)
|
21
|
-
end
|
22
|
-
|
23
|
-
# Change some parts of the step-{Normalizer} pipeline.
|
24
|
-
# We're bound to using a very primitive Pipeline API, remember, we don't have
|
25
|
-
# a DSL at this point!
|
26
|
-
def NormalizerForFail
|
27
|
-
pipeline = Linear::Normalizer.prepend_to(
|
28
|
-
Normalizer(),
|
29
|
-
"activity.wirings",
|
30
|
-
{
|
31
|
-
"railway.magnetic_to.fail" => Linear::Normalizer.Task(Fail.method(:merge_magnetic_to)),
|
32
|
-
}
|
33
|
-
)
|
34
|
-
|
35
|
-
pipeline = Linear::Normalizer.replace(
|
36
|
-
pipeline,
|
37
|
-
"path.connections",
|
38
|
-
["railway.connections.fail.success_to_failure", Linear::Normalizer.Task(Fail.method(:connect_success_to_failure))],
|
39
|
-
)
|
40
|
-
end
|
41
18
|
|
42
|
-
def NormalizerForPass
|
43
19
|
Linear::Normalizer.prepend_to(
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
20
|
+
step_normalizer,
|
21
|
+
Path::DSL::PREPEND_TO,
|
22
|
+
{
|
23
|
+
"railway.step.add_failure_connector" => Linear::Normalizer.Task(method(:add_failure_connector)),
|
24
|
+
},
|
48
25
|
)
|
49
26
|
end
|
50
27
|
|
51
28
|
module Fail
|
52
29
|
module_function
|
53
30
|
|
31
|
+
# Change some parts of the step-{Normalizer} pipeline.
|
32
|
+
# We're bound to using a very primitive Pipeline API, remember, we don't have
|
33
|
+
# a DSL at this point!
|
34
|
+
def Normalizer(**options)
|
35
|
+
pipeline = Linear::Normalizer.prepend_to( # TODO: replace path.magnetic_to???
|
36
|
+
DSL.Normalizer(**options), # grab Railway::DSL::Normalizer.
|
37
|
+
Path::DSL::PREPEND_TO,
|
38
|
+
{
|
39
|
+
"railway.magnetic_to.fail" => Linear::Normalizer.Task(Fail.method(:merge_magnetic_to)),
|
40
|
+
}
|
41
|
+
)
|
42
|
+
|
43
|
+
pipeline = Linear::Normalizer.replace(
|
44
|
+
pipeline,
|
45
|
+
"path.step.add_success_connector",
|
46
|
+
["railway.fail.success_to_failure", Linear::Normalizer.Task(Fail.method(:connect_success_to_failure))],
|
47
|
+
)
|
48
|
+
end
|
49
|
+
|
54
50
|
def merge_magnetic_to(ctx, **)
|
55
51
|
ctx[:magnetic_to] = :failure
|
56
52
|
end
|
57
53
|
|
58
|
-
|
59
|
-
|
54
|
+
SUCCESS_TO_FAILURE_CONNECTOR = {Linear::Normalizer::OutputTuples.Output(:success) => Linear::Strategy.Track(:failure)}
|
55
|
+
|
56
|
+
def connect_success_to_failure(ctx, non_symbol_options:, **)
|
57
|
+
ctx[:non_symbol_options] = SUCCESS_TO_FAILURE_CONNECTOR.merge(non_symbol_options)
|
60
58
|
end
|
61
59
|
end
|
62
60
|
|
63
61
|
module Pass
|
64
62
|
module_function
|
65
63
|
|
66
|
-
def
|
67
|
-
|
64
|
+
def Normalizer(**options)
|
65
|
+
Linear::Normalizer.replace(
|
66
|
+
DSL.Normalizer(**options), # grab Railway::DSL::Normalizer.
|
67
|
+
"railway.step.add_failure_connector",
|
68
|
+
["railway.pass.failure_to_success", Linear::Normalizer.Task(Pass.method(:connect_failure_to_success))]
|
69
|
+
)
|
68
70
|
end
|
69
|
-
end
|
70
71
|
|
71
|
-
|
72
|
-
# TODO: assert that failure_outputs doesn't override existing {:outputs}
|
73
|
-
def normalize_path_outputs(ctx, outputs:, **)
|
74
|
-
outputs = failure_outputs.merge(outputs)
|
72
|
+
FAILURE_TO_SUCCESS_CONNECTOR = {Linear::Normalizer::OutputTuples.Output(:failure) => Linear::Strategy.Track(:success)}
|
75
73
|
|
76
|
-
ctx
|
74
|
+
def connect_failure_to_success(ctx, **options)
|
75
|
+
Railway::DSL.add_failure_connector(ctx, **options, failure_connector: FAILURE_TO_SUCCESS_CONNECTOR)
|
76
|
+
end
|
77
77
|
end
|
78
78
|
|
79
|
-
|
80
|
-
|
81
|
-
|
79
|
+
FAILURE_OUTPUT = {failure: Activity::Output(Activity::Left, :failure)}
|
80
|
+
FAILURE_CONNECTOR = {Linear::Normalizer::OutputTuples.Output(:failure) => Linear::Strategy.Track(:failure)}
|
81
|
+
PASS_CONNECTOR = {Linear::Normalizer::OutputTuples.Output(:failure) => Linear::Strategy.Track(:success)}
|
82
|
+
FAIL_CONNECTOR = {Linear::Normalizer::OutputTuples.Output(:success) => Linear::Strategy.Track(:failure)}
|
82
83
|
|
83
|
-
|
84
|
-
|
84
|
+
# Add {:failure} output to {:outputs}.
|
85
|
+
# This is only called for non-Subprocess steps.
|
86
|
+
def add_failure_output(ctx, outputs:, **)
|
87
|
+
ctx[:outputs] = FAILURE_OUTPUT.merge(outputs)
|
85
88
|
end
|
86
89
|
|
87
|
-
def
|
88
|
-
|
90
|
+
def add_failure_connector(ctx, outputs:, non_symbol_options:, failure_connector: FAILURE_CONNECTOR, **)
|
91
|
+
return unless outputs[:failure] # do not add the default failure connection when we don't have
|
92
|
+
# a corresponding output.
|
93
|
+
|
94
|
+
ctx[:non_symbol_options] = failure_connector.merge(non_symbol_options)
|
89
95
|
end
|
90
96
|
|
91
97
|
Normalizers = Linear::Normalizer::Normalizers.new(
|
92
98
|
step: Railway::DSL.Normalizer(),
|
93
|
-
fail: Railway::DSL.
|
94
|
-
pass: Railway::DSL.
|
99
|
+
fail: Railway::DSL::Fail.Normalizer(),
|
100
|
+
pass: Railway::DSL::Pass.Normalizer(),
|
95
101
|
terminus: Linear::Normalizer::Terminus.Normalizer(),
|
96
102
|
)
|
97
103
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
lib = File.expand_path(
|
1
|
+
lib = File.expand_path("../lib", __FILE__)
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
3
|
require "trailblazer/activity/dsl/linear/version"
|
4
4
|
|
@@ -8,9 +8,8 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.authors = ["Nick Sutterer"]
|
9
9
|
spec.email = ["apotonick@gmail.com"]
|
10
10
|
|
11
|
-
spec.summary = %
|
12
|
-
spec.
|
13
|
-
spec.homepage = "http://trailblazer.to"
|
11
|
+
spec.summary = %(The #step DSL for Trailblazer activities.)
|
12
|
+
spec.homepage = "https://trailblazer.to/2.1/docs/activity"
|
14
13
|
spec.licenses = ["LGPL-3.0"]
|
15
14
|
|
16
15
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
@@ -18,14 +17,13 @@ Gem::Specification.new do |spec|
|
|
18
17
|
end
|
19
18
|
spec.require_paths = ["lib"]
|
20
19
|
|
21
|
-
spec.add_dependency "trailblazer-activity", ">= 0.
|
20
|
+
spec.add_dependency "trailblazer-activity", ">= 0.16.0", "< 0.17.0"
|
22
21
|
spec.add_dependency "trailblazer-declarative", ">= 0.0.1", "< 0.1.0"
|
23
22
|
|
24
23
|
spec.add_development_dependency "bundler"
|
25
|
-
spec.add_development_dependency "minitest", "
|
24
|
+
spec.add_development_dependency "minitest", ">= 5.15.0", "< 5.16.0"
|
26
25
|
spec.add_development_dependency "rake"
|
27
|
-
spec.add_development_dependency "trailblazer-developer", ">= 0.0.27", "< 0.1.0"
|
28
26
|
spec.add_development_dependency "trailblazer-core-utils", "0.0.2"
|
29
27
|
|
30
|
-
spec.required_ruby_version =
|
28
|
+
spec.required_ruby_version = ">= 2.5.0"
|
31
29
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trailblazer-activity-dsl-linear
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Sutterer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-04-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: trailblazer-activity
|
@@ -16,20 +16,20 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.16.0
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.
|
22
|
+
version: 0.17.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.
|
29
|
+
version: 0.16.0
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 0.
|
32
|
+
version: 0.17.0
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: trailblazer-declarative
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -68,16 +68,22 @@ dependencies:
|
|
68
68
|
name: minitest
|
69
69
|
requirement: !ruby/object:Gem::Requirement
|
70
70
|
requirements:
|
71
|
-
- - "
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: 5.15.0
|
74
|
+
- - "<"
|
72
75
|
- !ruby/object:Gem::Version
|
73
|
-
version:
|
76
|
+
version: 5.16.0
|
74
77
|
type: :development
|
75
78
|
prerelease: false
|
76
79
|
version_requirements: !ruby/object:Gem::Requirement
|
77
80
|
requirements:
|
78
|
-
- - "
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: 5.15.0
|
84
|
+
- - "<"
|
79
85
|
- !ruby/object:Gem::Version
|
80
|
-
version:
|
86
|
+
version: 5.16.0
|
81
87
|
- !ruby/object:Gem::Dependency
|
82
88
|
name: rake
|
83
89
|
requirement: !ruby/object:Gem::Requirement
|
@@ -92,26 +98,6 @@ dependencies:
|
|
92
98
|
- - ">="
|
93
99
|
- !ruby/object:Gem::Version
|
94
100
|
version: '0'
|
95
|
-
- !ruby/object:Gem::Dependency
|
96
|
-
name: trailblazer-developer
|
97
|
-
requirement: !ruby/object:Gem::Requirement
|
98
|
-
requirements:
|
99
|
-
- - ">="
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version: 0.0.27
|
102
|
-
- - "<"
|
103
|
-
- !ruby/object:Gem::Version
|
104
|
-
version: 0.1.0
|
105
|
-
type: :development
|
106
|
-
prerelease: false
|
107
|
-
version_requirements: !ruby/object:Gem::Requirement
|
108
|
-
requirements:
|
109
|
-
- - ">="
|
110
|
-
- !ruby/object:Gem::Version
|
111
|
-
version: 0.0.27
|
112
|
-
- - "<"
|
113
|
-
- !ruby/object:Gem::Version
|
114
|
-
version: 0.1.0
|
115
101
|
- !ruby/object:Gem::Dependency
|
116
102
|
name: trailblazer-core-utils
|
117
103
|
requirement: !ruby/object:Gem::Requirement
|
@@ -126,7 +112,7 @@ dependencies:
|
|
126
112
|
- - '='
|
127
113
|
- !ruby/object:Gem::Version
|
128
114
|
version: 0.0.2
|
129
|
-
description:
|
115
|
+
description:
|
130
116
|
email:
|
131
117
|
- apotonick@gmail.com
|
132
118
|
executables: []
|
@@ -134,9 +120,6 @@ extensions: []
|
|
134
120
|
extra_rdoc_files: []
|
135
121
|
files:
|
136
122
|
- ".github/workflows/ci.yml"
|
137
|
-
- ".github/workflows/ci_jruby.yml"
|
138
|
-
- ".github/workflows/ci_legacy.yml"
|
139
|
-
- ".github/workflows/ci_truffleruby.yml"
|
140
123
|
- ".gitignore"
|
141
124
|
- CHANGES.md
|
142
125
|
- DSL_IDEAS
|
@@ -150,11 +133,13 @@ files:
|
|
150
133
|
- lib/trailblazer/activity/dsl/linear/feature/patch.rb
|
151
134
|
- lib/trailblazer/activity/dsl/linear/feature/variable_mapping.rb
|
152
135
|
- lib/trailblazer/activity/dsl/linear/feature/variable_mapping/dsl.rb
|
153
|
-
- lib/trailblazer/activity/dsl/linear/feature/variable_mapping/inherit.rb
|
154
136
|
- lib/trailblazer/activity/dsl/linear/feature/variable_mapping/runtime.rb
|
155
137
|
- lib/trailblazer/activity/dsl/linear/helper.rb
|
156
138
|
- lib/trailblazer/activity/dsl/linear/helper/path.rb
|
157
139
|
- lib/trailblazer/activity/dsl/linear/normalizer.rb
|
140
|
+
- lib/trailblazer/activity/dsl/linear/normalizer/extensions.rb
|
141
|
+
- lib/trailblazer/activity/dsl/linear/normalizer/inherit.rb
|
142
|
+
- lib/trailblazer/activity/dsl/linear/normalizer/output_tuples.rb
|
158
143
|
- lib/trailblazer/activity/dsl/linear/normalizer/terminus.rb
|
159
144
|
- lib/trailblazer/activity/dsl/linear/sequence.rb
|
160
145
|
- lib/trailblazer/activity/dsl/linear/sequence/builder.rb
|
@@ -166,7 +151,7 @@ files:
|
|
166
151
|
- lib/trailblazer/activity/path.rb
|
167
152
|
- lib/trailblazer/activity/railway.rb
|
168
153
|
- trailblazer-activity-dsl-linear.gemspec
|
169
|
-
homepage:
|
154
|
+
homepage: https://trailblazer.to/2.1/docs/activity
|
170
155
|
licenses:
|
171
156
|
- LGPL-3.0
|
172
157
|
metadata: {}
|
@@ -178,7 +163,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
178
163
|
requirements:
|
179
164
|
- - ">="
|
180
165
|
- !ruby/object:Gem::Version
|
181
|
-
version: 2.
|
166
|
+
version: 2.5.0
|
182
167
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
183
168
|
requirements:
|
184
169
|
- - ">="
|
@@ -188,5 +173,5 @@ requirements: []
|
|
188
173
|
rubygems_version: 3.2.3
|
189
174
|
signing_key:
|
190
175
|
specification_version: 4
|
191
|
-
summary:
|
176
|
+
summary: 'The #step DSL for Trailblazer activities.'
|
192
177
|
test_files: []
|
@@ -1,19 +0,0 @@
|
|
1
|
-
## This file is managed by Terraform.
|
2
|
-
## Do not modify this file directly, as it may be overwritten.
|
3
|
-
## Please open an issue instead.
|
4
|
-
name: CI JRuby
|
5
|
-
on: [push, pull_request]
|
6
|
-
jobs:
|
7
|
-
test:
|
8
|
-
strategy:
|
9
|
-
fail-fast: false
|
10
|
-
matrix:
|
11
|
-
ruby: [jruby, jruby-head]
|
12
|
-
runs-on: ubuntu-latest
|
13
|
-
steps:
|
14
|
-
- uses: actions/checkout@v3
|
15
|
-
- uses: ruby/setup-ruby@v1
|
16
|
-
with:
|
17
|
-
ruby-version: ${{ matrix.ruby }}
|
18
|
-
bundler-cache: true
|
19
|
-
- run: bundle exec rake
|
@@ -1,19 +0,0 @@
|
|
1
|
-
## This file is managed by Terraform.
|
2
|
-
## Do not modify this file directly, as it may be overwritten.
|
3
|
-
## Please open an issue instead.
|
4
|
-
name: CI with EOL ruby versions
|
5
|
-
on: [push, pull_request]
|
6
|
-
jobs:
|
7
|
-
test:
|
8
|
-
strategy:
|
9
|
-
fail-fast: false
|
10
|
-
matrix:
|
11
|
-
ruby: [2.5, 2.6]
|
12
|
-
runs-on: ubuntu-latest
|
13
|
-
steps:
|
14
|
-
- uses: actions/checkout@v3
|
15
|
-
- uses: ruby/setup-ruby@v1
|
16
|
-
with:
|
17
|
-
ruby-version: ${{ matrix.ruby }}
|
18
|
-
bundler-cache: true
|
19
|
-
- run: bundle exec rake
|