use std::process::Command;
use std::process::Stdio;
pub fn waitfor(path: &str) {
let split = shell_words::split(path).expect("Invalid command syntax");
let program = &split[0];
let args = &split[1..];
if program.starts_with("$") {
let program = program.strip_prefix("$").unwrap();
let mut child = Command::new(std::env::var_os(program).unwrap())
.args(args)
.stdin(Stdio::inherit())
.stdout(Stdio::inherit())
.stderr(Stdio::inherit())
.spawn()
.expect("Failed to start");
child.wait().unwrap();
} else {
let mut child = Command::new(program)
.args(args)
.stdin(Stdio::inherit())
.stdout(Stdio::inherit())
.stderr(Stdio::inherit())
.spawn()
.expect("Failed to start");
child.wait().unwrap();
}
}
#[inline]
pub fn background(command: &str) {
let split = shell_words::split(command).expect("Invalid command syntax");
let program = &split[0];
let args = &split[1..];
if program.starts_with('$') {
let program = program.strip_prefix('$').unwrap();
let _ = Command::new(std::env::var_os(program).unwrap())
.args(args)
.stdin(Stdio::inherit())
.stdout(Stdio::inherit())
.stderr(Stdio::inherit())
.spawn()
.expect("Failed to start");
} else {
let _ = Command::new(program)
.args(args)
.stdin(Stdio::inherit())
.stdout(Stdio::inherit())
.stderr(Stdio::inherit())
.spawn()
.expect("Failed to start");
}
}
#[inline]
pub fn exec(command: &str) {
let path = command.strip_prefix("exec ").unwrap();
use std::os::unix::process::CommandExt;
use std::process::Command;
let split = shell_words::split(path).expect("Invalid command syntax");
let program = &split[0];
if program.starts_with("$") {
let program = program.strip_prefix("$").unwrap();
let args = &split[1..];
let _ = Command::new(std::env::var_os(program).unwrap())
.args(args)
.exec();
} else {
let args = &split[1..];
let _ = Command::new(program).args(args).exec();
}
}