pub enum StepKind {
Show 48 variants
Workdir(Arg),
Workspace(WorkspaceTarget),
Env {
key: String,
value: Arg,
},
InheritEnv {
keys: Vec<String>,
},
Echo(Arg),
Run(Arg),
Copy {
from_workspace: Option<WorkspaceTarget>,
from_host: bool,
to_host: bool,
from: Arg,
to: Arg,
},
CopyGit {
rev: Arg,
from: Arg,
to: Arg,
include_dirty: bool,
},
Symlink {
from_workspace: Option<WorkspaceTarget>,
from: Arg,
to: Arg,
},
Mkdir(Arg),
Install {
from: Arg,
to: Arg,
},
Ls(Option<Arg>),
Cwd,
Read(Option<Arg>),
ReadLine {
var: String,
},
Prompt {
var: String,
message: Arg,
default: Option<Arg>,
},
Write {
path: Arg,
contents: Option<Arg>,
},
Append {
path: Arg,
contents: Option<Arg>,
},
Remove {
path: Arg,
recursive: bool,
},
Expand {
path: Option<Arg>,
overrides: Vec<(String, Arg)>,
},
AssertEq {
hash: Option<String>,
actual: AssertTarget,
expected: Option<Arg>,
},
AssertContains {
haystack: AssertTarget,
needle: Arg,
},
HashSha256 {
path: Arg,
},
Exit(Arg),
Sleep {
duration: Arg,
},
ListAppend {
list: String,
item: Arg,
},
WithIo {
bindings: Vec<IoBinding>,
cmd: Box<StepKind>,
},
WithIoBlock {
bindings: Vec<IoBinding>,
},
TypeAlias {
name: String,
target: String,
},
For {
key_var: Option<String>,
key_type: Option<String>,
var: String,
var_type: String,
in_expr: Expr,
body: Vec<Step>,
},
If {
cond: Box<Expr>,
then_body: Vec<Step>,
else_ifs: Vec<(Box<Expr>, Vec<Step>)>,
else_body: Option<Vec<Step>>,
},
Assign {
var: String,
decl_type: String,
expr: Expr,
},
Set {
var: String,
expr: Expr,
},
AssignCapture {
var: String,
decl_type: String,
cmd: Box<StepKind>,
},
AwaitCapture {
out_var: String,
out_type: String,
task_var: String,
},
AsyncBlock {
body: Vec<Step>,
},
AssignAsync {
var: String,
decl_type: String,
body: Vec<Step>,
},
Await {
var: String,
},
Cancel {
var: String,
},
Timeout {
duration: Arg,
body: Vec<Step>,
},
RemoteBlock {
target: String,
vars: Vec<String>,
env: Vec<String>,
body: Vec<Step>,
},
RunExec {
argv: Vec<Arg>,
},
FuncDef {
name: String,
params: Vec<(String, String)>,
body: Vec<Step>,
},
Call {
name: String,
args: Vec<Expr>,
},
Return {
expr: Box<Expr>,
},
While {
cond: Box<Expr>,
body: Vec<Step>,
},
Break,
Continue,
}Variants§
Workdir(Arg)
Workspace(WorkspaceTarget)
Env
InheritEnv
Echo(Arg)
Run(Arg)
Copy
CopyGit
Symlink
Mkdir(Arg)
Install
Ls(Option<Arg>)
Cwd
Read(Option<Arg>)
ReadLine
Prompt
Write
Append
Remove
Expand
AssertEq
AssertContains
HashSha256
Exit(Arg)
Sleep
ListAppend
WithIo
WithIoBlock
TypeAlias
For
Fields
If
Fields
Assign
Set
AssignCapture
AwaitCapture
AsyncBlock
AssignAsync
Await
Cancel
Timeout
RemoteBlock
RunExec
FuncDef
Call
Return
While
Break
Continue
Implementations§
Source§impl StepKind
impl StepKind
Sourcepub fn walk_exprs(&self, f: &mut impl FnMut(&Expr))
pub fn walk_exprs(&self, f: &mut impl FnMut(&Expr))
Visit every immediate child expression (arguments, conditions,
durations, initializers). Boxed sub-kinds and bodies are NOT
descended: pair with walk_child_kinds
or use walk_step_exprs for the full
tree. Exhaustive: a new variant fails compilation here, so AST
passes built on this visitor can never silently miss a command.
Sourcepub fn walk_child_kinds(&self, f: &mut impl FnMut(&StepKind))
pub fn walk_child_kinds(&self, f: &mut impl FnMut(&StepKind))
Visit every immediate child kind: boxed sub-commands and the kinds
of every body step. Exhaustive like walk_exprs:
new block shapes fail compilation here.
Sourcepub fn walk_step_exprs(&self, f: &mut impl FnMut(&Expr))
pub fn walk_step_exprs(&self, f: &mut impl FnMut(&Expr))
Visit every descendant expression in the full subtree: immediate
expressions (deep via Expr::walk) plus
every nested body and boxed sub-command. The single traversal every
AST inspection pass should use.
Trait Implementations§
impl StructuralPartialEq for StepKind
Auto Trait Implementations§
impl Freeze for StepKind
impl RefUnwindSafe for StepKind
impl Send for StepKind
impl Sync for StepKind
impl Unpin for StepKind
impl UnsafeUnpin for StepKind
impl UnwindSafe for StepKind
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more