swf_builders/services/task/
fork.rs1use super::*;
2
3#[derive(Default)]
6pub struct ForkTaskDefinitionBuilder {
7 task: ForkTaskDefinition,
8 branch_counter: usize,
9}
10
11impl ForkTaskDefinitionBuilder {
12 pub fn new() -> Self {
13 Self::default()
14 }
15
16 pub fn compete(&mut self, compete: bool) -> &mut Self {
18 self.task.fork.compete = compete;
19 self
20 }
21
22 pub fn branch<F>(&mut self, setup: F) -> &mut Self
24 where
25 F: FnOnce(&mut TaskDefinitionBuilder),
26 {
27 let mut builder = TaskDefinitionBuilder::new();
28 setup(&mut builder);
29 let task = builder.build();
30 let name = format!("branch-{}", self.branch_counter);
31 self.branch_counter += 1;
32 self.task.fork.branches.add(name, task);
33 self
34 }
35
36 pub fn named_branch<F>(&mut self, name: &str, setup: F) -> &mut Self
38 where
39 F: FnOnce(&mut TaskDefinitionBuilder),
40 {
41 let mut builder = TaskDefinitionBuilder::new();
42 setup(&mut builder);
43 let task = builder.build();
44 self.task.fork.branches.add(name.to_string(), task);
45 self
46 }
47}
48
49impl_task_definition_builder_base!(ForkTaskDefinitionBuilder, task, TaskDefinition::Fork);