script/fmt and script/fmt-check now run gofmt for Go and prettier for Markdown; fmt-check reports each independently. prettier is pinned at 3.8.1 by package.json/yarn.lock (integrity hash); .prettierrc and .prettierignore are the house settings copied from the prompts repo. script/bootstrap installs node and yarn from the host package manager and runs `yarn install --frozen-lockfile`. The Markdown check runs in CI via the Dockerfile build stage, where bootstrap provides prettier; it is removed from the lint stage because the golangci-lint image has no node. JS manifests are copied before bootstrap so the yarn layer caches, and node_modules is dockerignored. node is an unpinned host runtime like git/make/go: nvm's glibc node does not run on the musl/Alpine build image, so the canonical nvm route is not usable here; prettier is the hash-pinned formatter. The wholesale Markdown reformat follows in the next commit. Model: opus-4-8
38 lines
913 B
Bash
Executable File
38 lines
913 B
Bash
Executable File
#!/bin/sh
|
|
# script/fmt-check: check formatting (read-only). Same scope as
|
|
# script/fmt: gofmt for Go, prettier for Markdown. Both run every time
|
|
# and each reports independently, so a failure names which formatter is
|
|
# unhappy; the script exits non-zero if either found unformatted files.
|
|
set -eu
|
|
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd -P)"
|
|
|
|
run_prettier() {
|
|
if ! command -v yarn >/dev/null 2>&1; then
|
|
echo "fmt-check: yarn not found; run script/bootstrap first" >&2
|
|
exit 1
|
|
fi
|
|
yarn run prettier "$@"
|
|
}
|
|
|
|
main() {
|
|
cd "$ROOT"
|
|
rc=0
|
|
|
|
files="$(gofmt -s -l .)"
|
|
if [ -n "$files" ]; then
|
|
echo "gofmt: files not formatted:" >&2
|
|
echo "$files" >&2
|
|
rc=1
|
|
fi
|
|
|
|
if ! run_prettier --check '**/*.md' --tab-width 4 --prose-wrap always; then
|
|
echo "prettier: Markdown not formatted; run make fmt" >&2
|
|
rc=1
|
|
fi
|
|
|
|
exit "$rc"
|
|
}
|
|
|
|
main "$@"
|