# Documentación Técnica: ADN CLI > Referencia para desarrolladores | Proyecto: dtic-DIIAA ## Punto de Entrada ```bash ./adn/tools/run [opciones] ``` ## Estructura de Comandos ``` adn/tools/ ├── run # Punto de entrada ├── cli/ # Subcomandos (18 archivos) │ ├── db.rb # CRUD de base de datos │ ├── jornada.rb # Gestión de jornada │ ├── nodos.rb # Gestión de nodos │ └── ... ├── core/ # Módulos reutilizables │ ├── constants.rb # Constantes globales │ ├── logger.rb # Logging estructurado │ ├── colores.rb # Colores ANSI │ ├── error_handler.rb # Helper de errores │ ├── help_formatter.rb # Ayuda estandarizada │ └── validador.rb # Validaciones └── spec/ # Tests ``` ## Constantes Principales ```ruby ADN::PROJECT_ROOT # Raíz del proyecto ADN::NODOS_DIR # Directorio de nodos ADN::BITACORAS_DIR # Directorio de bitácoras ADN::LOGS_DIR # Directorio de logs ADN::ESTADOS # Hash de estados (⏳✅❌⚠️⏸️📍) ADN::MODOS # Hash de modos (P/R) ADN::DB_CONFIG # Configuración de PostgreSQL ``` ## Excepciones Personalizadas ```ruby ADN::Error # Error base ADN::ConfigError # Error de configuración ADN::DBError # Error de base de datos ADN::ValidationError # Error de validación ADN::NetworkError # Error de red ``` ## Helpers Disponibles ### ADN::ErrorHandler ```ruby ADN::ErrorHandler.error("mensaje") # Sale con código 1 ADN::ErrorHandler.warning("mensaje") # Muestra warning ADN::ErrorHandler.info("mensaje") # Muestra info ADN::ErrorHandler.success("mensaje") # Muestra éxito ``` ### ADN::HelpFormatter ```ruby ADN::HelpFormatter.generar_help( titulo: "Comando", descripcion: "Hace algo", uso: "Uso: comando [OPCIONES]", opciones: [{names: ["h"], desc: "Ayuda"}], ejemplos: [{cmd: "comando -h", desc: "Ejemplo"}] ) ``` ## Tests ```bash cd adn/tools bundle exec rspec spec/ --format documentation ``` ## Logging Los logs se guardan en `logs/adn/YYYY-MM-DD.log` con formato JSON. ```ruby logger.info("mensaje", { clave: "valor" }) logger.error("error", { detalle: "info" }) ``` ### Rotación - Por tamaño: >10MB - Mantiene: 7 archivos ## Variables de Entorno | Variable | Descripción | | :--- | :--- | | `ADN_DEBUG` | Activa logs de debug (1 o true) | | `TZ` | Zona horaria (default: America/Argentina/Buenos_Aires) | ## Próximos Pasos - [ ] Usar HelpFormatter en todos los CLI - [ ] Migrar a ADN::ErrorHandler - [ ] Agregar más tests en spec/