use super::*;
#[derive(Default)]
pub struct ForkTaskDefinitionBuilder {
task: ForkTaskDefinition,
branch_counter: usize,
}
impl ForkTaskDefinitionBuilder {
pub fn new() -> Self {
Self::default()
}
pub fn compete(&mut self, compete: bool) -> &mut Self {
self.task.fork.compete = compete;
self
}
pub fn branch<F>(&mut self, setup: F) -> &mut Self
where
F: FnOnce(&mut TaskDefinitionBuilder),
{
let mut builder = TaskDefinitionBuilder::new();
setup(&mut builder);
let task = builder.build();
let name = format!("branch-{}", self.branch_counter);
self.branch_counter += 1;
self.task.fork.branches.add(name, task);
self
}
pub fn named_branch<F>(&mut self, name: &str, setup: F) -> &mut Self
where
F: FnOnce(&mut TaskDefinitionBuilder),
{
let mut builder = TaskDefinitionBuilder::new();
setup(&mut builder);
let task = builder.build();
self.task.fork.branches.add(name.to_string(), task);
self
}
}
impl_task_definition_builder_base!(ForkTaskDefinitionBuilder, task, TaskDefinition::Fork);