spec: separar responsabilidades feat: agregra pipeline de construccion en gitea
2.8 KiB
2.8 KiB
1. Extracción de dominios a archivos nuevos
- 1.1 Crear
client.gocon el tipoOutlineClient,newOutlineClienty el métodopostmovidos íntegros desdemain.go(mismos nombres, firmas, comentarios y directivas//nolint), ajustando solo el bloqueimport.- Given el código del cliente en
main.go - When se traslada a
client.goy se compila en el contenedor - Then
go build ./...compila sin errores y el archivo declarapackage main
- Given el código del cliente en
- 1.2 Crear
updater.gocongiteaRelease,parseVersion,versionNewerydoUpdatemovidos íntegros desdemain.go, ajustando solo el bloqueimport.- Given el código del auto-update en
main.go - When se traslada a
updater.goy se compila en el contenedor - Then
go build ./...compila sin errores yupdater.gono contiene referencias al cliente de Outline ni a los handlers MCP
- Given el código del auto-update en
- 1.3 Crear
tools.gocon los cuatro handlers MCP (handleListCollections,handleSearch,handleGetDocument,handleCreateDocument) movidos íntegros desdemain.go, ajustando solo el bloqueimport.- Given el código de los handlers en
main.go - When se traslada a
tools.goy se compila en el contenedor - Then
go build ./...compila sin errores y los cuatro handlers conservan nombre y firma
- Given el código de los handlers en
2. Reducción del entrypoint
- 2.1 Reducir
main.goa la funciónmain(), 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.gotras las extracciones - When se elimina el código duplicado/movido y se limpian los imports
- Then
main.gocontiene únicamente entrypoint + variables de build + registro de tools, ygo build ./...compila sin errores
- Given
3. Verificación
- 3.1 Ejecutar
golangci-lint rundentro del contenedor DevPod y corregir cualquier incidencia derivada del movimiento de código.- Given el refactor completado
- When se ejecuta
golangci-lint runen 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
-ldflagsde prueba y ejecutar handshake MCP +tools/listpor stdio.- Given el binario compilado a partir del código reorganizado
- When se envía por stdio el handshake
initializey una peticióntools/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.ymlni el contrato de nombres de assets.- Given el repositorio con el refactor aplicado
- When se revisa
git diffpara esos archivos - Then no aparecen modificaciones en ellos