use color_eyre::{Result, eyre::eyre};
use std::path::Path;
use tokio::process::Command;
pub struct CommandExecutor;
impl CommandExecutor {
pub async fn run(command: &str, args: &[&str], working_dir: &Path) -> Result<()> {
let output = Command::new(command)
.args(args)
.current_dir(working_dir)
.output()
.await?;
if !output.status.success() {
let stderr = String::from_utf8_lossy(&output.stderr);
return Err(eyre!("Command '{}' failed:\n{}", command, stderr));
}
Ok(())
}
}