# 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.
test:
	go test $(GO_PKGS)
