APP := pgtidy CMD := ./cmd/pgtidy DIST := dist .PHONY: build test lint vet fmt clean release snapshot vscode-compile vscode-package ## build: compile binary for the current platform build: go build -trimpath -ldflags "-s -w -X main.version=$$(git describe --tags --abbrev=0 2>/dev/null || echo dev)" -o $(DIST)/$(APP) $(CMD) ## test: run tests (incl. corpus safety harness) test: go test ./... ## vet: static analysis vet: go vet ./... ## fmt: format Go code fmt: go fmt ./... ## lint: vet + format check lint: vet test -z "$$(gofmt -l .)" || (echo "gofmt needed:"; gofmt -l .; exit 1) ## clean: remove build artifacts clean: rm -rf $(DIST) ## snapshot: build multi-platform binaries without publishing (requires goreleaser) snapshot: goreleaser release --snapshot --clean ## release: tag and publish a GitHub release (requires GITHUB_TOKEN + goreleaser) release: goreleaser release --clean ## vscode-compile: compile the VSCode extension TypeScript vscode-compile: cp -r assets editors/vscode/assets cd editors/vscode && pnpm install && pnpm run build ## vscode-package: build the .vsix package vscode-package: vscode-compile cd editors/vscode && pnpm run package