#!/bin/bash
# Git pre-commit hook - Runs ruff check and format before allowing commit

echo "🔍 Running ruff checks on staged Python files..."

# Get list of staged Python files
PYTHON_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep -E '\.pyi?$' || true)

if [ -z "$PYTHON_FILES" ]; then
    echo "✓ No Python files to check"
    exit 0
fi

echo "Checking files:"
echo "$PYTHON_FILES" | sed 's/^/  - /'
echo ""

# Run ruff check on staged files
echo "1️⃣ Running ruff check..."
if ! uv run ruff check $PYTHON_FILES; then
    echo ""
    echo "❌ Ruff check failed!"
    echo ""
    echo "Fix the errors above or:"
    echo "  - Run: uv run ruff check --fix src/"
    echo "  - Skip hook: git commit --no-verify"
    exit 1
fi
echo "✓ Ruff check passed!"
echo ""

# Run ruff format check on staged files
echo "2️⃣ Running ruff format check..."
if ! uv run ruff format --check $PYTHON_FILES; then
    echo ""
    echo "❌ Ruff format check failed!"
    echo ""
    echo "Fix the formatting:"
    echo "  - Run: uv run ruff format src/"
    echo "  - Skip hook: git commit --no-verify"
    exit 1
fi
echo "✓ Ruff format check passed!"
echo ""

echo "🎉 All checks passed!"
exit 0
