ztl-cli 0.1.0

Interactive cli for running scripts from Package.json
use crate::{args::CliArgs, config, runner, ui, package_manager};
use crate::error::ZtlError;
use colored::*;

pub fn run() -> Result<(), ZtlError> {
    let _args: CliArgs = CliArgs::parse();

    if !std::path::Path::new("package.json").exists() {
        eprintln!("{}", "Erro: package.json não encontrado no diretório atual"
            .red().bold());
        return Err(ZtlError::FileNotFound("package.json".to_string()));
    }

    let pm_result = package_manager::PackageManager::detect();
    if pm_result.is_err() {
        eprintln!("{}", "Nenhum gerenciador de pacotes (npm/yarn/pnpm) encontrado"
            .red().bold());
        return Err(ZtlError::NoPackageManagerFound);
    }

    let scripts: Vec<String> = config::read_scripts()?;

    if scripts.is_empty() {
        println!("{}", "Nenhum script encontrado no package.json"
            .yellow().bold());
        return Ok(());
    }

    let chosen: String = ui::select_script(&scripts)?;
    runner::run_script(&chosen)?;

    Ok(())
}