Files
keyfunc/script/fmt
T
clawbot 1ff02f252d
check / check (push) Successful in 2m41s
make fmt and make fmt-check cover Markdown with prettier (closes #39)
script/fmt now runs go fmt and then prettier --write on every Markdown
file; script/fmt-check runs the gofmt check and then prettier --check.
prettier is pinned in package.json and yarn.lock and configured in
.prettierrc with four-space indents and prose wrapped at 80 columns,
all copied from the sneak/prompts templates. After Go and the Go
modules, script/bootstrap uses an installed node or else a pinned one
through a hash-verified nvm archive, then an installed yarn or else a
pinned one, then the yarn dependencies. README.md is reformatted by
make fmt, and its Entrypoints section says what fmt, fmt-check and
bootstrap now do.

Model: opus-5-5
2026-10-04 03:10:16 +00:00

37 lines
1.0 KiB
Bash
Executable File

#!/bin/sh
# script/fmt: format all files (writes): the Go source with go fmt, then
# the Markdown files with prettier.
set -eu
ROOT="$(cd "$(dirname "$0")/.." && pwd -P)"
# Where script/bootstrap installs Go; it cannot put it on our PATH.
PATH="$HOME/.local/go/bin:$PATH"
# 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" "$@"
}
main() {
cd "$ROOT"
go fmt ./...
run_yarn run prettier --write '**/*.md' --tab-width 4 --prose-wrap always
}
main "$@"