#[macro_export]
macro_rules! define_pipeline {
( $( $variant:pat => $handler:path ),* $(,)? ) => {
pub fn execute_command<P: $crate::ProcessManager>(
step: &$crate::StepKind,
cx: &mut $crate::exec::StepCtx<'_, P>,
) -> ::anyhow::Result<()> {
match step {
$( $variant => $handler(step, cx), )*
$crate::StepKind::WithIo { .. } => $crate::exec::dispatch_with_io(step, cx),
$crate::StepKind::WithIoBlock { .. } => $crate::exec::dispatch_with_io_block(step, cx),
$crate::StepKind::InheritEnv { .. } => $crate::exec::dispatch_inherit_env(step, cx),
$crate::StepKind::For { .. } => $crate::exec::dispatch_for_loop(step, cx),
$crate::StepKind::If { .. } => $crate::exec::dispatch_if_then(step, cx),
$crate::StepKind::Assign { .. } => $crate::exec::dispatch_assign(step, cx),
}
}
};
}