Make fmt-check check what fmt writes (closes #22)
check / check (push) Successful in 2m10s

script/fmt writes with gofmt -s and goimports, but script/fmt-check
only ran gofmt -l. A file that gofmt -s would simplify, or whose
imports goimports would regroup, passed make check and then changed
on the next make fmt.

script/fmt-check now runs gofmt -s -l and goimports -l, prints each
file either would change once, and fails. It puts Go's bin directory
on PATH first, as script/fmt does, so it runs the goimports that
script/bootstrap installs. The README line on what make check runs
now names both formatters.

Model: opus-5-5
This commit was merged in pull request #24.
This commit is contained in:
2026-10-06 10:43:51 +02:00
parent 960f4e5ad1
commit 4666af1cc8
3 changed files with 13 additions and 4 deletions
+8 -3
View File
@@ -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
}