version: "3" # Quality gate for Tapir. `task check` is THE gate referenced by ADR-009 and the # CI workflow. Run it before every push (TBD: commit directly to main). tasks: default: cmds: - task: check check: desc: Full quality gate — fmt check, vet, lint, test. cmds: - task: fmt-check - task: vet - task: lint - task: test fmt: desc: Format all Go code. cmds: - gofmt -w . fmt-check: desc: Fail if any file is not gofmt-clean. cmds: - "test -z \"$(gofmt -l .)\" || { echo 'gofmt: files need formatting:'; gofmt -l .; exit 1; }" vet: desc: go vet. cmds: - go vet ./... lint: desc: golangci-lint (installed by CI; skipped locally if absent). cmds: - 'command -v golangci-lint >/dev/null 2>&1 && golangci-lint run ./... || echo "golangci-lint not installed — skipping (CI installs it)"' test: desc: Run all tests. -p 1 serializes packages so the embedded-postgres tests (store, web, oidc) don't race on the shared ~/.embedded-postgres-go data dir. cmds: - go test -p 1 ./... generate: desc: Regenerate Templ components (*_templ.go) from *.templ sources. cmds: - 'command -v templ >/dev/null 2>&1 && templ generate || go run github.com/a-h/templ/cmd/templ@latest generate' build: desc: Compile the binary. cmds: - go build -o bin/tapir ./cmd/tapir invite: desc: "Invite a user by email. Usage: task invite EMAIL=user@example.com" requires: vars: [EMAIL] cmds: - task: build - op run --env-file ~/.config/tapir/tapir.env -- ./bin/tapir invite "{{.EMAIL}}" skills: desc: Wire the engineering skills library into this repo (symlinks, gitignored). cmds: - curl -fsSL https://gitea.d-ma.be/mathias/skills/raw/branch/main/install.sh | bash