use clap::{Parser, Subcommand}; /// Suite de herramientas CLI para sysadmins /// /// crustaceo-tools unifica en un solo binario todas las herramientas /// que has ido construyendo: estadisticas de archivo, parseo de logs, /// informacion del sistema, grep recursivo y dashboard en terminal. /// /// Ejemplos: /// crustaceo-tools stats archivo.log /// crustaceo-tools logparse --level error archivo.log /// crustaceo-tools sysinfo /// crustaceo-tools grep "ERROR" /var/log/ /// crustaceo-tools dashboard --watch /// crustaceo-tools completions --shell bash #[derive(Parser)] #[command( name = "crustaceo-tools", version = "0.1.0", author = "Tu Nombre ", about = "Suite de herramientas CLI para sysadmins", long_about = None, subcommand_negates_reqs = true )] pub struct Cli { #[command(subcommand)] pub comando: Comandos, } /// Subcomandos disponibles en crustaceo-tools #[derive(Subcommand)] pub enum Comandos { /// Estadisticas basicas de un archivo (lineas, palabras, caracteres) Stats { /// Ruta al archivo a analizar archivo: String, }, /// Parsea un archivo de logs y filtra por nivel Logparse { /// Nivel de log a filtrar (error, warn, info, debug) #[arg(short = 'l', long = "level", default_value = "info")] nivel: String, /// Mostrar solo las lineas que coinciden, sin metadatos #[arg(short = 'q', long = "quiet")] quiet: bool, /// Archivo de log a procesar archivo: String, }, /// Muestra informacion del sistema (CPU, memoria, disco) Sysinfo { /// Formato de salida (texto o json) #[arg(short = 'f', long = "format", default_value = "text", value_parser = ["text", "json"])] formato: String, }, /// Busca un patron en archivos (grep recursivo con regex) Grep { /// Patron de busqueda (expresion regular) patron: String, /// Ignorar mayusculas/minusculas #[arg(short = 'i', long = "ignore-case")] ignorar_mayusculas: bool, /// Archivo(s) o directorio(s) donde buscar archivo: String, }, /// Muestra un dashboard del sistema en tiempo real Dashboard { /// Actualizar cada N segundos automaticamente #[arg(short = 'w', long = "watch", default_value = "0")] watch: u64, }, /// Genera scripts de autocompletado para shells Completions { /// Shell para la que generar el autocompletado #[arg(short = 's', long = "shell", value_parser = ["bash", "zsh", "fish"])] shell: String, }, }