- scripts/hooks/pre-commit: runs ruff --fix for root and web/ (matching CI) and re-stages any auto-fixed files so they land in the commit - Makefile: add install-hooks target (run once after clone) - pyproject.toml: exclude web/ from root ruff (web has its own config) - Fix remaining import sort warnings caught by the new hook Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
23 lines
624 B
Bash
23 lines
624 B
Bash
#!/usr/bin/env bash
|
|
# Pre-commit hook: ruff lint + auto-fix.
|
|
# Install: make install-hooks
|
|
set -euo pipefail
|
|
|
|
REPO_ROOT="$(git rev-parse --show-toplevel)"
|
|
RUFF="$REPO_ROOT/.venv/bin/ruff"
|
|
|
|
if [[ ! -x "$RUFF" ]]; then
|
|
echo "pre-commit: ruff not found at $RUFF — run 'uv sync' first" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "→ ruff check (root)"
|
|
"$RUFF" check --fix "$REPO_ROOT"
|
|
|
|
echo "→ ruff check (web/src web/tests)"
|
|
"$RUFF" check --fix "$REPO_ROOT/web/src" "$REPO_ROOT/web/tests" \
|
|
--config "$REPO_ROOT/web/pyproject.toml"
|
|
|
|
# Re-stage any files ruff fixed so they land in the commit.
|
|
git diff --name-only | xargs -r git add
|