use std::ffi::OsStr;
#[cfg(windows)]
use std::os::windows::process::CommandExt;
#[cfg(windows)]
const CREATE_NO_WINDOW: u32 = 0x08000000;
pub struct Command;
impl Command {
pub fn new<S: AsRef<OsStr>>(program: S) -> std::process::Command {
let mut inner = std::process::Command::new(program);
if cfg!(windows) {
inner.creation_flags(CREATE_NO_WINDOW);
}
inner
}
pub fn new_async<S: AsRef<OsStr>>(program: S) -> async_process::Command {
Self::new(program).into()
}
}
#[test]
fn should_work() {
let output = Command::new("cmd")
.args(["/C", "echo hello"])
.output()
.unwrap();
assert_eq!("hello\r\n", String::from_utf8(output.stdout).unwrap());
}