#!/bin/bash
set -e

echo "═══════════════════════════════════════════════════════════════"
echo "  TURBO-CDI Pre-Push Hook"
echo "═══════════════════════════════════════════════════════════════"

echo ""
echo "=== TypeScript typecheck ==="
cd web-v2 && npx tsc --noEmit && cd ..

echo ""
echo "=== Python mypy ==="
mypy src/ --strict

echo ""
echo "=== Python ruff ==="
ruff check src/

echo ""
echo "=== ESLint ==="
cd web-v2 && npm run lint && cd ..

echo ""
echo "=== pytest ==="
PYTHONPATH=src python3 -m pytest tests/ --cov=src --cov-config=.coveragerc --cov-fail-under=3

echo ""
echo "=== markdownlint ==="
if command -v markdownlint-cli2 >/dev/null 2>&1; then
    markdownlint-cli2 "**/*.md" || true
else
    echo "markdownlint-cli2 not installed, skipping..."
fi

echo ""
echo "=== version sync ==="
PY_VERSION=$(python3 -c "
import sys
try:
    import tomllib
    with open('pyproject.toml','rb') as f:
        print(tomllib.load(f)['project']['version'])
except Exception:
    try:
        import tomli
        with open('pyproject.toml','rb') as f:
            print(tomli.load(f)['project']['version'])
    except Exception:
        print('unknown')
" 2>/dev/null || echo "unknown")
JS_VERSION=$(node -p "require('./web-v2/package.json').version" 2>/dev/null || echo "unknown")
echo "pyproject.toml version: $PY_VERSION"
echo "package.json version:   $JS_VERSION"

if [ "$PY_VERSION" != "$JS_VERSION" ]; then
    echo "WARNING: Version mismatch! pyproject.toml ($PY_VERSION) != package.json ($JS_VERSION)"
    echo "Continuing anyway..."
fi

echo ""
echo "═══════════════════════════════════════════════════════════════"
echo "  Pre-push checks passed!"
echo "═══════════════════════════════════════════════════════════════"
