use std::process::Command;
use crate::error::ZtlError;
use crate::package_manager::PackageManager;
pub fn run_script(script: &str) -> Result<(), ZtlError> {
let package_manager = PackageManager::detect()?;
run_script_with_pm(script, &package_manager)
}
pub fn run_script_with_pm(script: &str, package_manager: &PackageManager) -> Result<(), ZtlError> {
let (cmd, run_arg) = package_manager.command_and_run_arg();
let mut command = Command::new(cmd);
if !run_arg.is_empty() {
command.arg(run_arg);
}
let status = command
.arg(script)
.status()?;
if status.success() {
Ok(())
} else {
Err(ZtlError::ScriptFailed(script.to_string()))
}
}