···11+22+SHELL = /bin/bash
33+.SHELLFLAGS = -o pipefail -c
44+55+# base path for Lexicon document tree (for lexgen)
66+LEXDIR?=../atproto/lexicons
77+88+# https://github.com/golang/go/wiki/LoopvarExperiment
99+export GOEXPERIMENT := loopvar
1010+1111+.PHONY: help
1212+help: ## Print info about all commands
1313+ @echo "Commands:"
1414+ @echo
1515+ @grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[01;32m%-20s\033[0m %s\n", $$1, $$2}'
1616+1717+.PHONY: build
1818+build: ## Build all executables
1919+ go build .
2020+2121+.PHONY: all
2222+all: build
2323+2424+.PHONY: test
2525+test: ## Run tests
2626+ go test ./...
2727+2828+.PHONY: coverage-html
2929+coverage-html: ## Generate test coverage report and open in browser
3030+ go test ./... -coverpkg=./... -coverprofile=test-coverage.out
3131+ go tool cover -html=test-coverage.out
3232+3333+.PHONY: lint
3434+lint: ## Verify code style and run static checks
3535+ go vet ./...
3636+ test -z $(gofmt -l ./...)
3737+3838+.PHONY: fmt
3939+fmt: ## Run syntax re-formatting (modify in place)
4040+ go fmt ./...