Files
mantrae/taskfile.yaml
d34dscene 05582c67d5 .
2025-10-06 22:28:05 +02:00

116 lines
2.6 KiB
YAML

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
vars:
VERSION:
sh: git describe --tags --abbrev=0
COMMIT:
sh: git rev-parse --short HEAD
DATE:
sh: date -u +%Y-%m-%d
LDFLAGS: >-
-s -w -X 'github.com/mizuchilabs/mantrae/pkg/meta.Version={{.VERSION}}' -X
'github.com/mizuchilabs/mantrae/pkg/meta.Commit={{.COMMIT}}' -X
'github.com/mizuchilabs/mantrae/pkg/meta.Date={{.DATE}}'
tasks:
dev:
desc: Run Go backend and Vite frontend concurrently
deps: [backend, frontend]
backend:
desc: Run Go backend
cmds:
- go run server/cmd/main.go
silent: false
frontend:
desc: Run Vite frontend
cmds:
- pnpm run dev
dir: web
silent: false
agent:
desc: Run Go agent
cmds:
- go run agent/cmd/main.go
silent: false
test:
desc: Run Go tests
cmds:
- go vet ./...
- go test ./...
- golangci-lint run
# 󰚰 Update deps
update:
desc: Update dependencies
cmds:
- go get -u ./...
- cd web && pnpm update --latest
#  Generate code
gen:
desc: Generate sqlc and buf
cmds:
- buf generate --clean
- sqlc generate
- go run -tags dev server/cmd/main.go -zod
#  Build binary
build:
desc: Build Go binary
deps: [build:frontend]
cmds:
- go build -o bin/server -ldflags="{{.LDFLAGS}}" ./server/cmd
- go build -o bin/agent -ldflags="{{.LDFLAGS}}" ./agent/cmd
- upx -9 bin/server
- upx -9 bin/agent
# 🏗 Build frontend
build:frontend:
desc: Build Svelte frontend
dir: web
cmds:
- pnpm install
- pnpm build
cleanup:tags:
desc: "Delete all tags older than cutoff (local + remote)"
vars:
CUTOFF: '{{.CUTOFF | default "v0.6.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
# 󱓞 Release
release:
desc: Build and release Go binary
deps: [build:frontend]
cmds:
- goreleaser release --clean --skip=validate
# 󰡨 Build container
docker:build:
desc: Build local test container with ko
deps: [build:frontend]
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