mirror of
https://github.com/watchexec/watchexec.git
synced 2024-09-29 22:51:33 +02:00
Fix #181 by splitting shell program in Shell::Unix() by ascii space to handle additional args
This commit is contained in:
parent
1b44e7aa87
commit
6635635a9c
@ -23,6 +23,12 @@ pub enum Shell {
|
|||||||
///
|
///
|
||||||
/// This means two things:
|
/// This means two things:
|
||||||
/// - the program is invoked with `-c` followed by the command, and
|
/// - the program is invoked with `-c` followed by the command, and
|
||||||
|
/// - the string will be split on space, and the resulting vec used as
|
||||||
|
/// popen3 arguments: first is the shell program, rest are additional
|
||||||
|
/// arguments (which come before the `-c` mentioned above). This is a very
|
||||||
|
/// simplistic approach deliberately: it will not support quoted
|
||||||
|
/// arguments, for example. Use [`Shell::None`] with a custom command vec
|
||||||
|
/// if you want that.
|
||||||
Unix(String),
|
Unix(String),
|
||||||
|
|
||||||
/// Use the Windows CMD.EXE shell.
|
/// Use the Windows CMD.EXE shell.
|
||||||
@ -95,7 +101,14 @@ impl Shell {
|
|||||||
|
|
||||||
Shell::Unix(name) => {
|
Shell::Unix(name) => {
|
||||||
assert!(!name.is_empty(), "shell program was empty");
|
assert!(!name.is_empty(), "shell program was empty");
|
||||||
|
let sh = name.split_ascii_whitespace().collect::<Vec<_>>();
|
||||||
|
|
||||||
|
// UNWRAP: checked by assert
|
||||||
|
#[allow(clippy::unwrap_used)]
|
||||||
|
let (shprog, shopts) = sh.split_first().unwrap();
|
||||||
|
|
||||||
let mut c = Command::new(shprog);
|
let mut c = Command::new(shprog);
|
||||||
|
c.args(shopts);
|
||||||
c.arg("-c").arg(cmd.join(" "));
|
c.arg("-c").arg(cmd.join(" "));
|
||||||
c
|
c
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user