Files
simplelog/script/fmt
T
clawbot d827a7e65c
check / check (push) Failing after 4s
Format Markdown with prettier in make fmt (closes #43)
script/fmt and script/fmt-check now run prettier on every Markdown file
after their Go steps, as the standard scripts from sneak/prompts at
dd4027b do. script/bootstrap gains the standard node, nvm and yarn
install next to its goimports install, and the last Dockerfile stage
copies package.json and yarn.lock before running it. .prettierrc,
.prettierignore and yarn.lock are the standard copies. package.json is
the standard one without its licence field and marked private, because
this repo's licence is the WTFPL. .dockerignore keeps the log of a failed
yarn install out of the build context. The existing Markdown is
reformatted in the next commit.

Model: opus-5-5
2026-10-06 14:03:51 +00:00

38 lines
1.2 KiB
Bash
Executable File

#!/bin/sh
# script/fmt: format all files (writes): Go with the goimports that
# script/bootstrap installs, then Markdown with prettier. It puts Go's bin
# directory first on PATH, as script/bootstrap does, so it runs that
# goimports even when the directory is not on the caller's PATH.
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" "$@"
}
main() {
cd "$ROOT"
gobin="$(go env GOBIN)"
PATH="${gobin:-$(go env GOPATH)/bin}:$PATH"
goimports -l -w .
run_yarn run prettier --write '**/*.md' --tab-width 4 --prose-wrap always
}
main "$@"