ztl-cli 0.1.0

Interactive cli for running scripts from Package.json
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()))
    }
}