#!/bin/bash
# Pre-commit hook to check for console statements and formatting issues

echo "Running pre-commit checks..."

# Get list of staged files (only text files, exclude binaries)
STAGED_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep -E '\.(cs|js|ts|jsx|tsx|py|java|cpp|c|h)$')

if [ -z "$STAGED_FILES" ]; then
    echo "✅ No relevant files to check"
    exit 0
fi

# Check for console/print statements
CONSOLE_PATTERNS=(
    "Console\.Write"
    "Console\.WriteLine"
    "console\.log"
    "console\.debug"
    "console\.warn"
    "console\.error"
    "print\("
    "printf\("
)

HAS_CONSOLE=0
for pattern in "${CONSOLE_PATTERNS[@]}"; do
    MATCHES=$(git diff --cached | grep -E "^\+.*$pattern" || true)
    if [ ! -z "$MATCHES" ]; then
        echo "❌ Found $pattern statements in staged changes:"
        echo "$MATCHES"
        HAS_CONSOLE=1
    fi
done

if [ $HAS_CONSOLE -eq 1 ]; then
    echo ""
    echo "❌ Pre-commit check failed: Remove console/print statements before committing"
    echo "   Or use --no-verify to bypass this check"
    exit 1
fi

# Check for basic formatting issues
echo "Checking for formatting issues..."

# Check for trailing whitespace
TRAILING_WS=$(git diff --cached --check 2>&1 | grep "trailing whitespace" || true)
if [ ! -z "$TRAILING_WS" ]; then
    echo "⚠️  Warning: Trailing whitespace detected:"
    echo "$TRAILING_WS"
    echo ""
fi

echo "✅ Pre-commit checks passed"
exit 0
