spec: separar responsabilidades feat: agregra pipeline de construccion en gitea
37 lines
2.8 KiB
Markdown
37 lines
2.8 KiB
Markdown
## 1. Extracción de dominios a archivos nuevos
|
|
|
|
- [ ] 1.1 Crear `client.go` con el tipo `OutlineClient`, `newOutlineClient` y el método `post` movidos íntegros desde `main.go` (mismos nombres, firmas, comentarios y directivas `//nolint`), ajustando solo el bloque `import`.
|
|
- **Given** el código del cliente en `main.go`
|
|
- **When** se traslada a `client.go` y se compila en el contenedor
|
|
- **Then** `go build ./...` compila sin errores y el archivo declara `package main`
|
|
- [ ] 1.2 Crear `updater.go` con `giteaRelease`, `parseVersion`, `versionNewer` y `doUpdate` movidos íntegros desde `main.go`, ajustando solo el bloque `import`.
|
|
- **Given** el código del auto-update en `main.go`
|
|
- **When** se traslada a `updater.go` y se compila en el contenedor
|
|
- **Then** `go build ./...` compila sin errores y `updater.go` no contiene referencias al cliente de Outline ni a los handlers MCP
|
|
- [ ] 1.3 Crear `tools.go` con los cuatro handlers MCP (`handleListCollections`, `handleSearch`, `handleGetDocument`, `handleCreateDocument`) movidos íntegros desde `main.go`, ajustando solo el bloque `import`.
|
|
- **Given** el código de los handlers en `main.go`
|
|
- **When** se traslada a `tools.go` y se compila en el contenedor
|
|
- **Then** `go build ./...` compila sin errores y los cuatro handlers conservan nombre y firma
|
|
|
|
## 2. Reducción del entrypoint
|
|
|
|
- [ ] 2.1 Reducir `main.go` a la función `main()`, las variables de build (`Version`, `GiteaURL`, `RepoOwner`, `RepoName`) y el registro de tools, eliminando el código ya trasladado y los imports no utilizados.
|
|
- **Given** `main.go` tras las extracciones
|
|
- **When** se elimina el código duplicado/movido y se limpian los imports
|
|
- **Then** `main.go` contiene únicamente entrypoint + variables de build + registro de tools, y `go build ./...` compila sin errores
|
|
|
|
## 3. Verificación
|
|
|
|
- [ ] 3.1 Ejecutar `golangci-lint run` dentro del contenedor DevPod y corregir cualquier incidencia derivada del movimiento de código.
|
|
- **Given** el refactor completado
|
|
- **When** se ejecuta `golangci-lint run` en el contenedor
|
|
- **Then** el linter no reporta errores nuevos respecto al estado previo al refactor
|
|
- [ ] 3.2 Verificar que el binario se comporta igual: compilar con `-ldflags` de prueba y ejecutar handshake MCP + `tools/list` por stdio.
|
|
- **Given** el binario compilado a partir del código reorganizado
|
|
- **When** se envía por stdio el handshake `initialize` y una petición `tools/list`
|
|
- **THEN** el servidor responde correctamente y lista las mismas cuatro tools con los mismos esquemas que antes del refactor
|
|
- [ ] 3.3 Confirmar que no cambiaron `go.mod`, `go.sum`, `.gitea/workflows/release.yml` ni el contrato de nombres de assets.
|
|
- **Given** el repositorio con el refactor aplicado
|
|
- **When** se revisa `git diff` para esos archivos
|
|
- **Then** no aparecen modificaciones en ellos
|