configuracion de entorno de desarrollo

This commit is contained in:
Carlos Sandoval
2026-09-02 18:02:43 +00:00
commit bc9fb0dd0f
22 changed files with 1985 additions and 0 deletions
@@ -0,0 +1,47 @@
# Spec: self-update
## ADDED Requirements
### Requirement: Consulta de la última release de Gitea
El sistema SHALL consultar el endpoint `/api/v1/repos/{owner}/{repo}/releases/latest` de la instancia de Gitea configurada para obtener la última release disponible.
#### Scenario: Consulta exitosa de última release
- **WHEN** se ejecuta la lógica de auto-actualización y la API de Gitea responde correctamente
- **THEN** el sistema obtiene el tag de la release y la lista de assets publicados
#### Scenario: Gitea no accesible
- **WHEN** la instancia de Gitea no es accesible o responde con error
- **THEN** el sistema finaliza con un mensaje de error sin modificar el binario actual
### Requirement: Comparación de versiones
El sistema SHALL comparar la versión actual del binario (`Version` inyectada vía ldflags) con el tag de la última release de Gitea, y MUST omitir la actualización si la versión actual es igual o superior.
#### Scenario: Versión actualizada disponible
- **WHEN** el tag de Gitea indica una versión superior a la versión actual
- **THEN** el sistema procede a descargar el asset correspondiente
#### Scenario: Versión ya actualizada
- **WHEN** la versión actual es igual o superior al tag de la última release
- **THEN** el sistema informa que no hay actualizaciones y no realiza cambios en el binario
### Requirement: Descarga del asset compatible
El sistema SHALL seleccionar el asset de la release cuyo nombre corresponda al sistema operativo y arquitectura actuales (`runtime.GOOS`, `runtime.GOARCH`), y MUST descargarlo antes de aplicar la actualización.
#### Scenario: Asset compatible disponible
- **WHEN** la release contiene un asset que coincide con el `GOOS`/`GOARCH` actuales
- **THEN** el sistema descarga dicho asset para aplicar la actualización
#### Scenario: Asset compatible no disponible
- **WHEN** la release no contiene un asset para la plataforma actual
- **THEN** el sistema finaliza con un error indicando que no existe binario para la plataforma
### Requirement: Aplicación del binario descargado
El sistema SHALL aplicar el binario descargado utilizando `selfupdate.Apply` (github.com/minio/selfupdate), reemplazando el binario en ejecución.
#### Scenario: Actualización aplicada correctamente
- **WHEN** el asset descargado es un binario válido
- **THEN** el sistema reemplaza el binario actual mediante `selfupdate.Apply` e informa el éxito de la operación
#### Scenario: Asset corrupto o inválido
- **WHEN** el asset descargado no es un binario válido
- **THEN** el sistema aborta la actualización e informa el error sin dejar el binario en estado inconsistente