#!/bin/bash
# Pre-commit hook for Foxhunt HFT system
# Lightweight checks only — compilation is validated by agents before commit

set -e

echo "🔍 Running pre-commit quality checks..."
echo ""

# Check for common issues in staged files
echo "🔎 Checking for common issues..."
STAGED_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep "\.rs$" || true)

if [ -n "$STAGED_FILES" ]; then
    # Check for unwrap() usage
    UNWRAP_FILES=$(echo "$STAGED_FILES" | xargs grep -l "\.unwrap()" 2>/dev/null || true)
    if [ -n "$UNWRAP_FILES" ]; then
        echo "⚠️  Warning: Found .unwrap() in staged files:"
        echo "$UNWRAP_FILES" | sed 's/^/    /'
        echo "   Consider using ? operator or proper error handling"
        echo ""
    fi

    # Check for expect() with generic messages
    EXPECT_FILES=$(echo "$STAGED_FILES" | xargs grep -l "\.expect(\"\")" 2>/dev/null || true)
    if [ -n "$EXPECT_FILES" ]; then
        echo "⚠️  Warning: Found .expect() with empty message in:"
        echo "$EXPECT_FILES" | sed 's/^/    /'
        echo "   Provide descriptive error messages"
        echo ""
    fi

    # Check for TODO/FIXME comments
    TODO_COUNT=$(echo "$STAGED_FILES" | xargs grep -c "TODO\|FIXME" 2>/dev/null | awk -F: '{sum+=$2} END {print sum}' || echo "0")
    if [ "$TODO_COUNT" -gt 0 ]; then
        echo "ℹ️  Info: Found $TODO_COUNT TODO/FIXME comments in staged files"
        echo ""
    fi

    # Check for stub patterns in src/ files
    SRC_FILES=$(echo "$STAGED_FILES" | grep "/src/" || true)
    if [ -n "$SRC_FILES" ]; then
        STUB_RETURNS=$(echo "$SRC_FILES" | xargs grep -n 'return 0\.0\b\|return 100\.0\|return 1\.0\b\|return vec!\[\]' 2>/dev/null | grep -v '// ok:' | grep -v '// legitimate' || true)
        if [ -n "$STUB_RETURNS" ]; then
            echo "⚠️  Warning: Possible stub return values in staged files:"
            echo "$STUB_RETURNS" | head -5 | sed 's/^/    /'
            echo "   Add '// ok: <reason>' comment to suppress if intentional"
            echo ""
        fi

        STUB_MARKERS=$(echo "$SRC_FILES" | xargs grep -n '"placeholder"\|"stub"\|"fake"\|"hardcoded"\|"dummy"' 2>/dev/null | grep -v '// ok:' || true)
        if [ -n "$STUB_MARKERS" ]; then
            echo "⚠️  Warning: Stub marker strings in production code:"
            echo "$STUB_MARKERS" | head -5 | sed 's/^/    /'
            echo ""
        fi
    fi
fi

# GPU hot-path leak detection
echo "🔎 Checking for GPU→CPU leaks in hot paths..."
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
if [ -x "$SCRIPT_DIR/gpu-hotpath-guard.sh" ]; then
    if ! "$SCRIPT_DIR/gpu-hotpath-guard.sh" --staged; then
        echo "⛔ GPU hot-path leak detected — fix or suppress with // gpu-ok: <reason>"
        exit 1
    fi
    echo "   No GPU→CPU leaks in hot paths"
    echo ""
fi

echo "✅ All pre-commit checks passed!"
echo ""
echo "Summary:"
echo "  - Code quality checks: ✅"
echo "  - GPU hot-path guard: ✅"
echo ""

exit 0
