check / check (push) Successful in 3m6s
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
23 lines
609 B
Bash
Executable File
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 "$@"
|