Cómo se Realizó Glastor ReadmeGen
Esta sección documenta el proceso de ingeniería, decisiones técnicas y evolución detrás del desarrollo de Glastor ReadmeGen.
🏛️ Evolución del Proyecto
-
Fase Inicial (Rust):
- El proyecto comenzó originalmente como una herramienta CLI compilada en Rust (
crate glastor_dev) con utilidades de generación y análisis de estadísticas en GitHub. - Aunque Rust ofrecía un rendimiento extremo y binarios independientes, la integración directa con proyectos del ecosistema Deno requería soporte nativo para TypeScript sin pasos de compilación intermedios.
- El proyecto comenzó originalmente como una herramienta CLI compilada en Rust (
-
Migración a Deno & TypeScript (v2.0+):
- Para alinearse con las mejores prácticas modernas de JavaScript/TypeScript, el proyecto fue rediseñado desde cero sobre el Runtime de Deno.
- Beneficios obtenidos:
- Ejecución nativa de TypeScript sin tooling complejo (Babel, Webpack).
- Permisos granulares de seguridad (
--allow-read,--allow-write). - Ecosistema estándar de pruebas (
deno test), linters (deno lint) y formateo (deno fmt). - Facilidad para ejecutarse directamente en pipelines de GitHub Actions mediante
deno run.
🛠️ Tecnologías y Librerías Utilizadas
El desarrollo de la herramienta se apoya en tecnologías seleccionadas por su robustez y rendimiento:
- Runtime: Deno (versión 1.40.0 o superior).
- CLI Framework:
@cliffy/commandpara la construcción de una interfaz de línea de comandos tipada, con validación de opciones y subcomandos. - Prompts Interactivos:
@cliffy/promptpara el asistente interactivoreadmegen init. - Manipulación de Rutas y Archivos: Módulos oficiales de Deno Standard Library (
@std/path,@std/fs). - Análisis de Código (AST): Parsers integrados con expresiones regulares y análisis de tokens para extraer firmas JSDoc, funciones exportadas e interfaces sin requerir compiladores externos pesados.
- Documentación Estática: mdBook desplegado automáticamente mediante GitHub Actions en GitHub Pages.
⚙️ Flujo de Ejecución del Generador
El proceso de generación sigue una tubería (pipeline) lineal y determinista:
[Proyecto Deno]
│
▼
1. Carga de Configuración (.readmegen.json / CLI flags)
│
▼
2. Inspección Estática (Parsers)
├── deno.json (versión, scripts, metadatos)
├── import_map.json (mapeo de dependencias)
├── .github/workflows/ (workflows de CI/CD activos)
└── src/ (análisis AST de símbolos y exportaciones)
│
▼
3. Enriquecimiento de Datos (Generators)
├── Generación de Badges (licencia, versión, build status)
├── Generación de Tabla de Contenidos (TOC)
└── Generación de Documentación de API
│
▼
4. Renderizado de Plantilla (Template Engine)
├── Sustitución de variables {{key}}
└── Inyección inteligente para evitar duplicaciones
│
▼
5. Sanitización y Normalización
├── Eliminación de líneas residuales
└── Limpieza de BOM y caracteres invisibles
│
▼
[README.md Generado]