# Development convenience targets. This repo is exempt from the standard # policy scaffold (no Dockerfile, CI, or REPO_POLICIES.md); this Makefile # is only a thin wrapper around the Go toolchain, golangci-lint, and # prettier so `make fmt` / `make check` behave the same as in sneak's # other repos. GO_PKGS := ./... MD_FILES := $(shell git ls-files '*.md') PRETTIER := prettier --tab-width 4 --prose-wrap always .PHONY: check fmt fmt-check lint test # Format, lint, and test — the full local pre-commit gate. check: fmt-check lint test # Format Go and Markdown in place. fmt: gofmt -w . $(PRETTIER) --write $(MD_FILES) # Fail if any Go or Markdown file is not formatted. fmt-check: @unformatted="$$(gofmt -l .)"; \ if [ -n "$$unformatted" ]; then \ echo "gofmt needed on:"; echo "$$unformatted"; exit 1; \ fi $(PRETTIER) --check $(MD_FILES) # Run the house linter (config in .golangci.yml). lint: golangci-lint run $(GO_PKGS) # Run the test suite. Quiet on success; on failure, rerun verbosely for the # full output and still fail the target (the first run already proved the # tests are broken, so a flaky pass on the rerun must not rescue the build). test: @go test -timeout 30s -race -cover $(GO_PKGS) || \ { echo "--- Rerunning with -v for details ---"; \ go test -timeout 30s -race -v $(GO_PKGS); exit 1; }