diff --git a/README.md b/README.md index e5ad7d3..fc572fe 100644 --- a/README.md +++ b/README.md @@ -97,7 +97,7 @@ Future improvements under consideration: * Issues / PRs: * Code must pass `make check`, which runs the tests and golangci-lint as phases of the `Dockerfile` (Docker is required) and checks formatting - with `gofmt`. + with `gofmt -s` and goimports. * No CLA; contributions are under WTFPL v2. --- diff --git a/TODO.md b/TODO.md index c24f343..0fbb313 100644 --- a/TODO.md +++ b/TODO.md @@ -24,6 +24,10 @@ Author are missing) # Completed Steps +* 2026-10-06: `script/fmt-check` checks what `script/fmt` writes: it + fails and lists the files when `gofmt -s` or goimports would change + one, so a file that passes `make check` no longer changes on the + next `make fmt` * 2026-10-06: canonical files re-vendored from `sneak/prompts` at `dd4027b`: `REPO_POLICIES.md` and `.editorconfig` added; `.dockerignore`, `.gitignore`, `.golangci.yml` and the workflow diff --git a/script/fmt-check b/script/fmt-check index b7438ef..91ebc00 100755 --- a/script/fmt-check +++ b/script/fmt-check @@ -7,10 +7,15 @@ ROOT="$(cd "$(dirname "$0")/.." && pwd -P)" main() { cd "$ROOT" - files="$(gofmt -l .)" + # script/bootstrap installs goimports into Go's bin directory, which + # need not be on PATH. + gobin="$(go env GOBIN)" + [ -n "$gobin" ] || gobin="$(go env GOPATH)/bin" + PATH="$gobin:$PATH" + files="$(gofmt -s -l .; goimports -l .)" if [ -n "$files" ]; then - echo "gofmt: files not formatted:" >&2 - echo "$files" >&2 + echo "files that make fmt would change:" >&2 + echo "$files" | sort -u >&2 exit 1 fi }