Re-vendor the canonical files from sneak/prompts at e3f79c4 (closes #95)
check / check (push) Canceled after 0s
check / check (push) Canceled after 0s
Every vendored file, REPO_POLICIES.md and every model script is the copy at sneak/prompts e3f79c4, with this repository's own entries kept after the canonical content. Lint and test are phases of the Dockerfile that write no image. Every build in script/ passes a new CACHEBUST value, which every stage declares first, so every RUN step runs again; the steps that compile keep Go's build cache, and both go test runs pass -count=1. make test runs the suite under the race detector as nobody. Dockerfile.lint, script/verify-lint-image-pin and make test-race are gone. Prettier runs on the host. .claude/settings.json is deleted. Deviation: the set comes from e3f79c4 on next rather than dd4027b. Judgement call: the test phase mounts the cache at nobody's /tmp/.cache/go-build, owned by nobody. Model: opus-5-5
This commit is contained in:
+36
-15
@@ -1,19 +1,45 @@
|
||||
#!/bin/sh
|
||||
# script/fmt-check: check formatting (read-only). Same scope as
|
||||
# script/fmt, but fails instead of writing. gofmt and prettier both run
|
||||
# every time and each reports its own failure, so the output says which
|
||||
# one failed.
|
||||
# script/fmt-check: check formatting (read-only).
|
||||
set -eu
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd -P)"
|
||||
ROOT="$(cd "$SCRIPT_DIR/.." && pwd -P)"
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd -P)"
|
||||
|
||||
# Must match the pin in script/bootstrap.
|
||||
NODE_VERSION="22.17.0"
|
||||
|
||||
# True when the node on PATH has the pinned major version: the same
|
||||
# function as in script/bootstrap, which uses it to decide where it
|
||||
# installs yarn.
|
||||
node_is_pinned_major() {
|
||||
if ! command -v node >/dev/null 2>&1; then return 1; fi
|
||||
installed="$(node --version)"
|
||||
installed="${installed#v}"
|
||||
[ "${installed%%.*}" = "${NODE_VERSION%%.*}" ]
|
||||
}
|
||||
|
||||
# Run the yarn script/bootstrap installed: the yarn on PATH when the
|
||||
# node on PATH has the pinned major version, and otherwise yarn under
|
||||
# the pinned node in nvm, which bootstrap leaves off the PATH of the
|
||||
# shell that called it. nvm is a bash script, hence the subshell.
|
||||
run_yarn() {
|
||||
if node_is_pinned_major && command -v yarn >/dev/null 2>&1; then
|
||||
exec yarn "$@"
|
||||
fi
|
||||
if node_is_pinned_major || [ ! -s "$HOME/.nvm/nvm.sh" ]; then
|
||||
echo "fmt-check: 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"
|
||||
status=0
|
||||
|
||||
# Under set -e a bare assignment would end the script when gofmt
|
||||
# fails (a Go file it cannot parse), and prettier would never run.
|
||||
# gofmt and prettier both run every time, so the output names each
|
||||
# one that fails. Under set -e a bare assignment would end the
|
||||
# script when gofmt fails (a Go file it cannot parse).
|
||||
if ! files="$(gofmt -s -l .)"; then
|
||||
echo "gofmt: failed; see its errors above" >&2
|
||||
status=1
|
||||
@@ -24,14 +50,9 @@ main() {
|
||||
status=1
|
||||
fi
|
||||
|
||||
# Same image as script/fmt; see there.
|
||||
image="$("$SCRIPT_DIR/projectname")-prettier"
|
||||
docker build -q --target prettier -t "$image" . >/dev/null
|
||||
if ! docker run --rm -v "$ROOT:/src:ro" "$image" \
|
||||
prettier --check '**/*.md' --tab-width 4 --prose-wrap always; then
|
||||
echo "prettier: Markdown not formatted; run make fmt" >&2
|
||||
# run_yarn ends in exec; the subshell returns here afterwards.
|
||||
(run_yarn run prettier --check '**/*.md' --tab-width 4 --prose-wrap always) ||
|
||||
status=1
|
||||
fi
|
||||
|
||||
exit "$status"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user