trailblazer-activity-dsl-linear 1.2.3 → 1.2.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGES.md +17 -0
- data/Gemfile +1 -1
- data/lib/trailblazer/activity/dsl/linear/helper/path.rb +21 -6
- data/lib/trailblazer/activity/dsl/linear/normalizer.rb +1 -0
- data/lib/trailblazer/activity/dsl/linear/strategy.rb +0 -1
- data/lib/trailblazer/activity/dsl/linear/version.rb +1 -1
- data/lib/trailblazer/activity/fast_track.rb +7 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b99e0c72f1c402fc56bf48c302d04d5749e47f159ce9d7b10a2537665a0af62e
|
4
|
+
data.tar.gz: f3c35842ae2631b358a1decaad27bb32785e578f0f99cf2597757c2e4485a120
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2035d707ca689d84923de40eaccd48b08c355be9351172804dc45d80ded9a141088b26b2d7a464727c5b9c49082018d02085aa3754d0bdca19ad13c6bf70a161
|
7
|
+
data.tar.gz: cfdf092b175fdefd34a0321248aa95f4a5a8c768b18e3f23f9285be10c0f1c720dd633e061b9d079a60d610ef743ad6544597af0bf5adb3cf7cb53b6b9b91502
|
data/CHANGES.md
CHANGED
@@ -1,3 +1,20 @@
|
|
1
|
+
# 1.2.5
|
2
|
+
|
3
|
+
* Fix a bug where, within a helper `Path()`, the last step couldn't
|
4
|
+
explicitly define additional `Output()`, e.g. for `:failure`.
|
5
|
+
|
6
|
+
```ruby
|
7
|
+
... => Path(connect_to: Track(:success)) do
|
8
|
+
step :upload,
|
9
|
+
Output(Trailblazer::Activity::Left, :failure) => Track(:failure) # FIXME: this configuration gets lost.
|
10
|
+
end
|
11
|
+
```
|
12
|
+
|
13
|
+
# 1.2.4
|
14
|
+
|
15
|
+
* Fix a bug where using `fail_fast: true` (same with `:pass_fast`) would result in a
|
16
|
+
compile time exception `No fail_fast output found`. See https://github.com/trailblazer/trailblazer/issues/256
|
17
|
+
|
1
18
|
# 1.2.3
|
2
19
|
|
3
20
|
* Add `FastTrack.left` alias.
|
data/Gemfile
CHANGED
@@ -97,14 +97,29 @@ module Trailblazer
|
|
97
97
|
# Connect last row of the {sequence} to the given step via its {Id}
|
98
98
|
# Useful when steps needs to be inserted in between {Start} and {connect Id()}.
|
99
99
|
private def connect_for_sequence(sequence, connect_to:)
|
100
|
-
|
100
|
+
last_step_on_path = sequence[-1]
|
101
|
+
output_searches = last_step_on_path[2]
|
102
|
+
|
103
|
+
last_step_outputs =
|
104
|
+
output_searches.collect do |search_strategy|
|
105
|
+
# TODO: introduce {search_strategy.to_h} so we don't need to execute it here.
|
106
|
+
output, _ = search_strategy.(sequence, last_step_on_path) # FIXME: the Forward() proc contains the row's Output, and the only current way to retrieve it is calling the search strategy. It should be Forward#to_h
|
107
|
+
output
|
108
|
+
end
|
109
|
+
|
110
|
+
# we want to reconnect the last step's {:success} output, everything else we keep.
|
111
|
+
success_output = last_step_outputs.find { |output| output.to_h[:semantic] == :success } or raise
|
112
|
+
|
113
|
+
# FIXME: what about End()?
|
114
|
+
success_search = Sequence::Search.ById(success_output, connect_to.value) if connect_to.instance_of?(Linear::Normalizer::OutputTuples::Id)
|
115
|
+
success_search = Sequence::Search.Forward(success_output, connect_to.color) if connect_to.instance_of?(Linear::Normalizer::OutputTuples::Track) # FIXME: use existing mapping logic!
|
116
|
+
|
117
|
+
success_output_index = last_step_outputs.index(success_output)
|
101
118
|
|
102
|
-
#
|
103
|
-
searches = [Sequence::Search.ById(output, connect_to.value)] if connect_to.instance_of?(Linear::Normalizer::OutputTuples::Id)
|
104
|
-
searches = [Sequence::Search.Forward(output, connect_to.color)] if connect_to.instance_of?(Linear::Normalizer::OutputTuples::Track) # FIXME: use existing mapping logic!
|
119
|
+
output_searches[success_output_index] = success_search # replace the success search strategy. # DISCUSS: a bit cryptical with this index.
|
105
120
|
|
106
|
-
row =
|
107
|
-
row = row[0..1] + [
|
121
|
+
row = last_step_on_path
|
122
|
+
row = row[0..1] + [output_searches] + [row[3]] # FIXME: not mutating an array is so hard: we only want to replace the "searches" element, index 2
|
108
123
|
row = Sequence::Row[*row]
|
109
124
|
|
110
125
|
sequence[0..-2] + [row]
|
@@ -112,10 +112,11 @@ module Trailblazer
|
|
112
112
|
ctx = merge_connections_for!(ctx, :fast_track, :fail_fast, :fail_fast, **ctx)
|
113
113
|
end
|
114
114
|
|
115
|
-
def pass_fast_option(ctx, **)
|
115
|
+
def pass_fast_option(ctx, outputs:, **)
|
116
116
|
ctx = merge_connections_for!(ctx, :pass_fast, :success, **ctx)
|
117
117
|
|
118
|
-
ctx = merge_connections_for!(ctx, :pass_fast, :pass_fast, :pass_fast, **ctx)
|
118
|
+
ctx = merge_connections_for!(ctx, :pass_fast, :pass_fast, :pass_fast, **ctx) if outputs[:pass_fast]
|
119
|
+
ctx
|
119
120
|
end
|
120
121
|
|
121
122
|
def pass_fast_option_for_pass(ctx, **)
|
@@ -123,10 +124,12 @@ module Trailblazer
|
|
123
124
|
ctx = merge_connections_for!(ctx, :pass_fast, :success, **ctx)
|
124
125
|
end
|
125
126
|
|
126
|
-
def fail_fast_option(ctx, **)
|
127
|
+
def fail_fast_option(ctx, outputs:, **)
|
127
128
|
ctx = merge_connections_for!(ctx, :fail_fast, :failure, **ctx)
|
128
129
|
|
129
|
-
|
130
|
+
# DISCUSS: instead of checking outputs here, we could introduce something like Output(non_strict: true)
|
131
|
+
ctx = merge_connections_for!(ctx, :fail_fast, :fail_fast, :fail_fast, **ctx) if outputs[:fail_fast]
|
132
|
+
ctx
|
130
133
|
end
|
131
134
|
|
132
135
|
def fail_fast_option_for_fail(ctx, **)
|
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.2.
|
4
|
+
version: 1.2.5
|
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: 2024-03-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: trailblazer-activity
|