version: "3" output: prefixed env: CGO_ENABLED: 0 IMAGE_SERVER_DEV: ko.local/mantrae IMAGE_AGENT_DEV: ko.local/mantrae-agent IMAGE_SERVER_PROD: ghcr.io/mizuchilabs/mantrae IMAGE_AGENT_PROD: ghcr.io/mizuchilabs/mantrae-agent tasks: dev: desc: Run Go backend and Vite web concurrently deps: [backend, web] backend: desc: Run Go backend cmds: - go run server/cmd/main.go silent: false web: desc: Run frontend cmds: - pnpm run dev dir: web silent: false agent: desc: Run agent cmds: - go run agent/cmd/main.go silent: false docs: desc: Run docs cmds: - pnpm run start dir: docs silent: false # 󰉠 Lint / static checks lint: desc: Run go vet & lint cmds: - go mod tidy - go fmt ./... - go vet ./... # 󰚰 Update deps update: desc: Update dependencies cmds: - go get -u ./... - cd web && pnpm update --latest - cd docs && pnpm update --latest #  Generate code gen: desc: Generate necessary files cmds: - buf generate - sqlc generate - go run zod.go # 🏗 Build frontend build:web: desc: Build Frontend dir: web cmds: - pnpm install - pnpm build cleanup:tags: desc: "Delete all tags older than cutoff (local + remote)" vars: CUTOFF: '{{.CUTOFF | default "v0.7.0"}}' cmds: - | for tag in $(git tag | sort -V | awk '$1 < "{{.CUTOFF}}"'); do echo "Deleting tag $tag" git tag -d "$tag" git push --delete origin "$tag" done snapshot: desc: Snapshot cmds: - goreleaser --snapshot --clean --skip=validate # 󱓞 Release release: desc: Release deps: [build:web] cmds: - goreleaser release --clean --skip=validate # 󰡨 Build container docker:build: desc: Build local test container with ko deps: [build:web] cmds: - KO_DOCKER_REPO=$IMAGE_SERVER_DEV ko build ./server/cmd --bare - KO_DOCKER_REPO=$IMAGE_AGENT_DEV ko build ./agent/cmd --bare - grype $IMAGE_SERVER_DEV - grype $IMAGE_AGENT_DEV docker:release: desc: Build and push container to registry deps: [build:web] cmds: - KO_DOCKER_REPO=$IMAGE_SERVER_PROD ko build ./server/cmd --bare - KO_DOCKER_REPO=$IMAGE_AGENT_PROD ko build ./agent/cmd --bare