check / check (push) Successful in 1m3s
script/ holds the entrypoints and the Makefile targets shim to them. Linting and testing are phases of the Dockerfile, built alone by script/lint and script/test with a fresh CACHEBUST value and cache mounts for Go's build cache and golangci-lint's; the build stage depends on both, and the runtime stage ships the binary and the source without .git. Formatting stays on the host in script/fmt and script/fmt-check (gofmt and the prettier pinned in yarn.lock). script/cibuild bootstraps, runs script/check and builds the tagged image, and the Gitea workflow calls it. script/precommit refuses a commit whose go.mod or go.sum is not tidy. cgo stays off, so the test phase runs on the alpine Go image without -race; that is the one departure from the canonical Go Dockerfile. Re-vendored from the prompts repository's next branch: REPO_POLICIES.md (2026-11-04), .golangci.yml (byte-identical, so the local exhaustruct_v5 addition is gone now that canonical carries it), .gitea/workflows/check.yml, .editorconfig, .gitignore and .dockerignore, the last two followed by this repository's own entries. AGENTS.md holds the repository-specific guidance for agents. The README gains the Entrypoints section and describes the new gates.
23 lines
636 B
Bash
Executable File
23 lines
636 B
Bash
Executable File
#!/bin/sh
|
|
# script/precommit: run by the git pre-commit hook; fails the commit if
|
|
# checks fail. Our own extension to scripts-to-rule-them-all. The Go
|
|
# extra: go.mod and go.sum must already be tidy, so a commit never
|
|
# carries a module file that go mod tidy would rewrite.
|
|
set -eu
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd -P)"
|
|
ROOT="$(cd "$SCRIPT_DIR/.." && pwd -P)"
|
|
|
|
main() {
|
|
cd "$ROOT"
|
|
go mod tidy
|
|
if ! git diff --quiet --exit-code -- go.mod go.sum; then
|
|
echo "precommit: go mod tidy changed go.mod or go.sum;" \
|
|
"stage them and retry" >&2
|
|
exit 1
|
|
fi
|
|
"$SCRIPT_DIR/check"
|
|
}
|
|
|
|
main "$@"
|