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(())
}