mirror of
https://github.com/marcogll/omarchy_setup.git
synced 2026-01-13 21:35:16 +00:00
Se mueve el archivo `AGENTS.md` al nuevo directorio oculto `.docs` para organizar mejor los archivos de documentación interna del proyecto. Se actualiza el enlace correspondiente en el archivo `Readme.md` para que apunte a la nueva ubicación del archivo. Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
5.0 KiB
5.0 KiB
AGENTS.md - Guía para Contribuidores y Tareas Pendientes
Este documento está destinado a los desarrolladores (humanos o agentes de IA) que trabajan en el proyecto Omarchy Setup. Contiene un resumen del estado actual, una lista de tareas pendientes y directrices para el desarrollo futuro.
Análisis del Proyecto
El proyecto "Omarchy Setup" es un script de post-instalación para Arch Linux, diseñado con un enfoque en la modularidad y la facilidad de uso.
- Orquestador Principal (
omarchy-setup.sh): Actúa como el punto de entrada. Presenta un menú interactivo al usuario, gestiona las sesiones desudo, y coordina la ejecución de los diferentes módulos. - Módulos (
modules/): Cada archivo.shen este directorio encapsula una funcionalidad específica (ej. instalar aplicaciones, configurar Docker, personalizar Zsh). Esta estructura facilita la adición o modificación de tareas sin afectar al resto del sistema. - Funciones Comunes (
modules/common.sh): Centraliza el código repetitivo, como las funciones de logging, la instalación de paquetes (pacman y AUR), y la creación de backups. Esto promueve la reutilización de código y la consistencia. - Interactividad: El sistema está diseñado para ser interactivo, solicitando confirmación del usuario para acciones importantes, pero también soporta ejecuciones en segundo plano para tareas no interactivas.
Tareas Pendientes y Mejoras
A continuación se detallan las tareas prioritarias para mejorar la funcionalidad y robustez del proyecto.
1. Implementar un Sistema de Dependencias entre Módulos
- Objetivo: Evitar fallos cuando un módulo requiere que otro se haya ejecutado previamente (por ejemplo,
ssh-keyring.shnecesita queapps.shinstalegnome-keyring). - Acción Propuesta:
- En cada módulo, definir un array o variable que liste sus dependencias. Ejemplo en
ssh-keyring.sh:MODULE_DEPS=("apps"). - En
omarchy-setup.sh, antes de ejecutar un módulo, leer esta variable y comprobar si los módulos dependientes ya han sido ejecutados (se podría mantener un registro de módulos completados). - Si una dependencia no se ha cumplido, informar al usuario y ofrecerle ejecutarla primero.
- En cada módulo, definir un array o variable que liste sus dependencias. Ejemplo en
2. Crear un Archivo de Configuración Central (omarchy.conf)
- Objetivo: Facilitar instalaciones desatendidas y permitir a los usuarios pre-configurar sus preferencias sin modificar los scripts.
- Acción Propuesta:
- Crear un archivo
omarchy.conf.examplecon pares clave-valor para las opciones personalizables (ej.INSTALL_DOCKER="true",ZEROTIER_NETWORK_ID="tu_id_de_red"). - En
omarchy-setup.sh, comprobar si existeomarchy.confy cargarlo. - Modificar los módulos para que lean estas variables de configuración y actúen en consecuencia, saltándose las preguntas interactivas si la opción está definida.
- Crear un archivo
3. Añadir Funcionalidad de Desinstalación / Reversión
- Objetivo: Permitir a los usuarios deshacer los cambios realizados por un módulo de forma segura.
- Acción Propuesta:
- Para cada módulo, crear una función
uninstall_<nombre_modulo>. - Esta función debe realizar la acción inversa a la instalación: eliminar paquetes, restaurar archivos de configuración a partir de los backups
.baky deshabilitar los servicios correspondientes. - Añadir una nueva opción en el menú principal para acceder a un sub-menú de desinstalación.
- Para cada módulo, crear una función
4. Implementar Verificaciones Post-Instalación
- Objetivo: Aumentar la fiabilidad del script confirmando que el software principal de cada módulo se ha instalado y funciona correctamente.
- Acción Propuesta:
- Al final de cada módulo, añadir una pequeña función de
verify_<nombre_modulo>. - Esta función debería ejecutar un comando simple para comprobar el estado del software. Ejemplos:
- Docker:
docker --versionydocker run hello-world. - Zsh:
zsh --versiony comprobar queoh-my-poshestá en el$PATH. - ZeroTier:
sudo zerotier-cli status.
- Docker:
- Informar al usuario si la verificación ha sido exitosa o ha fallado.
- Al final de cada módulo, añadir una pequeña función de
Directrices para Futuros Desarrollos
- Modularidad: Toda nueva funcionalidad debe encapsularse en su propio módulo.
- Idempotencia: Los scripts deben poder ejecutarse múltiples veces sin causar efectos secundarios negativos. Comprueba siempre si un paquete ya está instalado o si una configuración ya existe antes de aplicarla.
- Lenguaje y Estilo: Todo el código y los comentarios deben estar en español para mantener la consistencia del proyecto.
- Manejo de Errores: Utiliza las funciones
log_error,log_warningylog_successdecommon.shpara proporcionar feedback claro al usuario. Si un comando crítico falla, el script debe salir de forma controlada. - Seguridad: No almacenes información sensible (contraseñas, claves de API) directamente en los scripts. Utiliza ficheros locales como
.zshrc.local(que está en.gitignore) para estos casos.