Files
keyfunc/script/precommit
T
clawbot 9d1b9a9f19
check / check (push) Successful in 3m6s
script/bootstrap installs the Dockerfile's Go from go.dev (closes #46)
The Gitea runner has Docker and git but no Go, and the apt path never
ran apt-get update, so on a fresh host every install failed.

Bootstrap now installs Go 1.26.8, the version in the Dockerfile's
golang image, from the release archive at go.dev, checked against a
sha256 in the script, into ~/.local/go whenever the go first on PATH
reports any other version. script/fmt, script/fmt-check,
script/precommit and the Makefile put ~/.local/go/bin first on their
PATH so they use it. The apt path runs apt-get update once, before its
first install.

Model: opus-5-5
2026-10-04 01:40:33 +00:00

23 lines
609 B
Bash
Executable File

#!/bin/sh
# script/precommit: run by the git pre-commit hook; fails the commit if
# checks fail. Go extras run first: go mod tidy and go fmt, failing the
# commit if they change go.mod or go.sum.
set -eu
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd -P)"
ROOT="$(cd "$SCRIPT_DIR/.." && pwd -P)"
# Where script/bootstrap installs Go; it cannot put it on our PATH.
PATH="$HOME/.local/go/bin:$PATH"
main() {
cd "$ROOT"
go mod tidy
go fmt ./...
git diff --exit-code -- go.mod go.sum ||
{ echo "go mod tidy changed files; stage and retry" >&2; exit 1; }
"$SCRIPT_DIR/check"
}
main "$@"