use anyhow::{anyhow, Result};
use std::process::{Command, Stdio};
pub fn execute(command: &str, path: &str) -> Result<()> {
let cmd_string = command.to_string();
let mut parts = cmd_string.trim().split_whitespace();
let base_cmd = parts.next().ok_or_else(|| anyhow!("Invalid command."))?;
let mut cmd = Command::new(base_cmd);
if cmd_string.contains("%s") {
cmd.args(parts.map(|a| if a == "%s" { path } else { a }));
} else {
cmd.args(parts.chain(vec![path].into_iter()));
}
cmd.stdout(Stdio::null()).stderr(Stdio::null());
match cmd.spawn() {
Ok(_) => Ok(()),
Err(err) => Err(anyhow!(err)),
}
}