#!/bin/bash
# run-verification.sh
# Runs TypeScript + ESLint verification with structured output

set -o pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"

# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "🔍 VERIFICATION PHASE"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"

cd "$PROJECT_ROOT"

ERRORS_FOUND=0
TS_ERRORS=0
LINT_ERRORS=0

# ─────────────────────────────────────────────────────────────
# TypeScript Check
# ─────────────────────────────────────────────────────────────

echo ""
echo "📋 Running TypeScript check..."
echo ""

TSC_OUTPUT=$(npm run typecheck 2>&1) || true

if echo "$TSC_OUTPUT" | grep -q "error TS"; then
    TS_ERRORS=$(echo "$TSC_OUTPUT" | grep -c "error TS" || echo "0")
    ERRORS_FOUND=1

    echo -e "${RED}❌ TypeScript: $TS_ERRORS error(s) found${NC}"
    echo ""
    echo "$TSC_OUTPUT" | grep "error TS" | head -20

    if [ "$TS_ERRORS" -gt 20 ]; then
        echo ""
        echo "... and $(($TS_ERRORS - 20)) more errors"
    fi
else
    echo -e "${GREEN}✅ TypeScript: No errors${NC}"
fi

# ─────────────────────────────────────────────────────────────
# ESLint Check
# ─────────────────────────────────────────────────────────────

echo ""
echo "📋 Running ESLint check..."
echo ""

LINT_OUTPUT=$(npm run lint 2>&1) || true

if echo "$LINT_OUTPUT" | grep -qE "error|warning"; then
    LINT_ERRORS=$(echo "$LINT_OUTPUT" | grep -cE "error|warning" || echo "0")
    ERRORS_FOUND=1

    echo -e "${RED}❌ ESLint: Issues found${NC}"
    echo ""
    echo "$LINT_OUTPUT" | head -30
else
    echo -e "${GREEN}✅ ESLint: No warnings${NC}"
fi

# ─────────────────────────────────────────────────────────────
# Summary
# ─────────────────────────────────────────────────────────────

echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"

if [ $ERRORS_FOUND -eq 0 ]; then
    echo -e "${GREEN}✅ VERIFICATION PASSED${NC}"
    echo ""
    echo "No TypeScript errors."
    echo "No ESLint warnings."
    echo ""
    echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
    echo -e "${GREEN}✓ Ready to commit${NC}"
    echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"

    echo ""
    echo "VERIFICATION_STATUS=PASSED"
    echo "TS_ERRORS=0"
    echo "LINT_ERRORS=0"

    exit 0
else
    echo -e "${RED}❌ VERIFICATION FAILED${NC}"
    echo ""
    echo "TypeScript errors: $TS_ERRORS"
    echo "ESLint issues: $LINT_ERRORS"
    echo ""
    echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
    echo -e "${YELLOW}⚠️  Fix errors before proceeding${NC}"
    echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"

    echo ""
    echo "VERIFICATION_STATUS=FAILED"
    echo "TS_ERRORS=$TS_ERRORS"
    echo "LINT_ERRORS=$LINT_ERRORS"

    exit 1
fi
