diff --git a/utils/src/macros.rs b/utils/src/macros.rs index 01a3b5b9..ccb19bff 100644 --- a/utils/src/macros.rs +++ b/utils/src/macros.rs @@ -15,12 +15,12 @@ macro_rules! cmd { ::std::process::Command::new($command) }; ($command:ident, $($tail:tt)*) => { - cmd!(@ $command, $($tail)*) + $crate::cmd!(@ $command, $($tail)*) }; ($command:expr, $($tail:tt)*) => { { - let mut c = cmd!($command); - cmd!(@ c, $($tail)*); + let mut c = $crate::cmd!($command); + $crate::cmd!(@ c, $($tail)*); c } }; @@ -28,57 +28,57 @@ macro_rules! cmd { (@ $command:ident, for $for_expr:expr $(, $($tail:tt)*)?) => { { for arg in $for_expr.iter() { - cmd!($command, arg); + $crate::cmd!($command, arg); } - $(cmd!(@ $command, $($tail)*);)* + $($crate::cmd!(@ $command, $($tail)*);)* } }; (@ $command:ident, for $iter:ident in $for_expr:expr => [ $($arg:expr),* $(,)? ] $(, $($tail:tt)*)?) => { { for $iter in $for_expr.iter() { - $(cmd!(@ $command, $arg);)* + $($crate::cmd!(@ $command, $arg);)* } - $(cmd!(@ $command, $($tail)*);)* + $($crate::cmd!(@ $command, $($tail)*);)* } }; (@ $command:ident, for $iter:ident in $for_expr:expr => $arg:expr $(, $($tail:tt)*)?) => { { for $iter in $for_expr.iter() { - cmd!(@ $command, $arg); + $crate::cmd!(@ $command, $arg); } - $(cmd!(@ $command, $($tail)*);)* + $($crate::cmd!(@ $command, $($tail)*);)* } }; (@ $command:ident, if let $let_pat:pat = $if_expr:expr => [ $($arg:expr),* $(,)? ] $(, $($tail:tt)*)?) => { { if let $let_pat = $if_expr { - $(cmd!(@ $command, $arg);)* + $($crate::cmd!(@ $command, $arg);)* } - $(cmd!(@ $command, $($tail)*);)* + $($crate::cmd!(@ $command, $($tail)*);)* } }; (@ $command:ident, if let $let_pat:pat = $if_expr:expr => $arg:expr $(, $($tail:tt)*)?) => { { if let $let_pat = $if_expr { - cmd!(@ $command, $arg); + $crate::cmd!(@ $command, $arg); } - $(cmd!(@ $command, $($tail)*);)* + $($crate::cmd!(@ $command, $($tail)*);)* } }; (@ $command:ident, if $if_expr:expr => [ $($arg:expr),* $(,)?] $(, $($tail:tt)*)?) => { { if $if_expr { - $(cmd!(@ $command, $arg);)* + $($crate::cmd!(@ $command, $arg);)* } - $(cmd!(@ $command, $($tail)*);)* + $($crate::cmd!(@ $command, $($tail)*);)* } }; (@ $command:ident, if $if_expr:expr => $arg:expr $(, $($tail:tt)*)?) => { { if $if_expr { - cmd!(@ $command, $arg); + $crate::cmd!(@ $command, $arg); } - $(cmd!(@ $command, $($tail)*);)* + $($crate::cmd!(@ $command, $($tail)*);)* } }; (@ $command:ident, |$cmd_ref:ident|? $op:block $(, $($tail:tt)*)?) => { @@ -88,44 +88,50 @@ macro_rules! cmd { Ok(()) }; op_fn(&mut $command)?; - $(cmd!(@ $command, $($tail)*);)* + $($crate::cmd!(@ $command, $($tail)*);)* } }; (@ $command:ident, |$cmd_ref:ident| $op:block $(, $($tail:tt)*)?) => { { let op_fn = |$cmd_ref: &mut ::std::process::Command| $op; op_fn(&mut $command); - $(cmd!(@ $command, $($tail)*);)* + $($crate::cmd!(@ $command, $($tail)*);)* } }; (@ $command:ident, $key:expr => $value:expr $(, $($tail:tt)*)?) => { { $command.env($key, $value); - $(cmd!(@ $command, $($tail)*);)* + $($crate::cmd!(@ $command, $($tail)*);)* + } + }; + (@ $command:ident, current_dir = $dir:expr $(, $($tail:tt)*)?) => { + { + $command.current_dir($dir); + $($crate::cmd!(@ $command, $($tail)*);)* } }; (@ $command:ident, stdin = $pipe:expr $(, $($tail:tt)*)?) => { { $command.stdin($pipe); - $(cmd!(@ $command, $($tail)*);)* + $($crate::cmd!(@ $command, $($tail)*);)* } }; (@ $command:ident, stdout = $pipe:expr $(, $($tail:tt)*)?) => { { $command.stdout($pipe); - $(cmd!(@ $command, $($tail)*);)* + $($crate::cmd!(@ $command, $($tail)*);)* } }; (@ $command:ident, stderr = $pipe:expr $(, $($tail:tt)*)?) => { { $command.stderr($pipe); - $(cmd!(@ $command, $($tail)*);)* + $($crate::cmd!(@ $command, $($tail)*);)* } }; (@ $command:ident, $arg:expr $(, $($tail:tt)*)?) => { { $command.arg($arg); - $(cmd!(@ $command, $($tail)*);)* + $($crate::cmd!(@ $command, $($tail)*);)* } }; } @@ -143,7 +149,7 @@ macro_rules! string_vec { { use $crate::string; vec![ - $(string!($string),)* + $($crate::string!($string),)* ] } };