#!/usr/bin/env bash # pre-commit gate. Runs lint (gofmt -l + go vet + shellcheck), unit # tests, and a build before any commit lands. Activate once via # `make install-hooks`, which points core.hooksPath at this directory. # # Bypass for in-flight WIP commits with `git commit --no-verify`. set -euo pipefail # Resolve repo root so the hook works from any subdirectory. repo_root="$(git rev-parse --show-toplevel)" cd "$repo_root" # `make lint` already wraps `gofmt -l`, `go vet`, and shellcheck. echo '[pre-commit] lint' make --no-print-directory lint echo '[pre-commit] test' make --no-print-directory test echo '[pre-commit] build' make --no-print-directory build echo '[pre-commit] ok'