check / check (push) Waiting to run
script/fmt now runs golines -m 77 after gofmt, repeating golines until it changes nothing, since one pass can leave a line the next splits. script/fmt-check fails when either would change a file. script/bootstrap installs golines v0.13.0 with go install, pinned to its commit, and checks the installed version with go version -m. The tree is reformatted. The longer lines this makes are fixed by hand: nolint directives moved onto their own line above the statement, one string split, and 20 functions over funlen's 80 lines shortened or split, RunWAF and limitPercentages among them. Model: opus-5-5
64 lines
1.9 KiB
Bash
Executable File
64 lines
1.9 KiB
Bash
Executable File
#!/bin/sh
|
|
# script/fmt: format all files (writes): the Go code with gofmt and
|
|
# then golines -m 77, the Markdown with prettier.
|
|
set -eu
|
|
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd -P)"
|
|
|
|
# Must match the pin in script/bootstrap.
|
|
NODE_VERSION="22.17.0"
|
|
|
|
# script/bootstrap installs node and yarn under nvm and leaves neither
|
|
# on the PATH of the shell that called it, so resolve the pinned
|
|
# toolchain here the way bootstrap's own install step does. nvm is a
|
|
# bash script, hence the subshell.
|
|
run_yarn() {
|
|
if command -v yarn >/dev/null 2>&1; then
|
|
exec yarn "$@"
|
|
fi
|
|
if [ ! -s "$HOME/.nvm/nvm.sh" ]; then
|
|
echo "fmt: no yarn; run script/bootstrap first" >&2
|
|
exit 1
|
|
fi
|
|
exec bash -c '. "$HOME/.nvm/nvm.sh" && nvm use "$1" >/dev/null &&
|
|
shift && exec yarn "$@"' bash "$NODE_VERSION" "$@"
|
|
}
|
|
|
|
# The golines that script/bootstrap installed: go install puts it in
|
|
# GOBIN, or in GOPATH/bin when GOBIN is unset.
|
|
golines_path() {
|
|
gobin="$(go env GOBIN)"
|
|
golines="${gobin:-$(go env GOPATH)/bin}/golines"
|
|
if [ ! -x "$golines" ]; then
|
|
echo "fmt: no golines; run script/bootstrap first" >&2
|
|
exit 1
|
|
fi
|
|
echo "$golines"
|
|
}
|
|
|
|
main() {
|
|
cd "$ROOT"
|
|
golines="$(golines_path)"
|
|
gofmt -w cmd internal
|
|
# One golines pass can leave a line that the next pass splits
|
|
# further, so run it until it would change nothing. The check is
|
|
# not the while condition, where set -e would ignore a golines
|
|
# failure.
|
|
passes=0
|
|
while true; do
|
|
unformatted="$("$golines" -m 77 -l cmd internal)"
|
|
if [ -z "$unformatted" ]; then
|
|
break
|
|
fi
|
|
passes=$((passes + 1))
|
|
if [ "$passes" -gt 5 ]; then
|
|
echo "fmt: golines -m 77 still changes files after 5 passes" >&2
|
|
exit 1
|
|
fi
|
|
"$golines" -m 77 -w cmd internal
|
|
done
|
|
run_yarn run prettier --write '**/*.md' --tab-width 4 --prose-wrap always
|
|
}
|
|
|
|
main "$@"
|