#!/bin/bash # # Pre-commit hook: ruff lint check on staged Python files. # Catches syntax errors, unused imports, and basic issues before commit. # To bypass in emergency: git commit --no-verify # RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' REPO_ROOT=$(git rev-parse --show-toplevel) cd "$REPO_ROOT" STAGED_PY=$(git diff --cached --name-only --diff-filter=ACM -- '*.py') if [ -z "$STAGED_PY" ]; then exit 0 fi echo "ruff check on staged files..." echo "$STAGED_PY" | xargs ruff check RUFF_EXIT=$? if [ $RUFF_EXIT -ne 0 ]; then echo "" echo -e "${RED}Pre-commit checks failed. Commit blocked.${NC}" echo -e "${YELLOW}To bypass (not recommended): git commit --no-verify${NC}" exit 1 fi echo -e "${GREEN}All checks passed.${NC}" exit 0