#!/bin/bash
#==============================================================================
# pre-commit hook (모노레포: frontend/)
# TypeScript 컴파일 + 린트 검증 — 실패 시 커밋 차단
#==============================================================================

FRONTEND_DIR="frontend"

# frontend 디렉토리 없으면 건너뜀
if [ ! -d "$FRONTEND_DIR" ]; then
    exit 0
fi

echo "pre-commit: TypeScript 타입 체크 중..."

# npm 확인
if ! command -v npx &>/dev/null; then
    echo "경고: npx가 설치되지 않았습니다. 검증을 건너뜁니다."
    exit 0
fi

# node_modules 확인
if [ ! -d "${FRONTEND_DIR}/node_modules" ]; then
    echo "경고: ${FRONTEND_DIR}/node_modules가 없습니다. 'cd ${FRONTEND_DIR} && npm install' 실행 후 다시 시도하세요."
    exit 1
fi

# TypeScript 타입 체크 (frontend 디렉토리에서 실행)
(cd "${FRONTEND_DIR}" && npx tsc --noEmit --pretty 2>&1)
TSC_RESULT=$?

if [ $TSC_RESULT -ne 0 ]; then
    echo ""
    echo "╔══════════════════════════════════════════════════════════╗"
    echo "║  TypeScript 타입 에러! 커밋이 차단되었습니다.           ║"
    echo "║  타입 에러를 수정한 후 다시 커밋해주세요.               ║"
    echo "╚══════════════════════════════════════════════════════════╝"
    echo ""
    exit 1
fi

echo "pre-commit: 타입 체크 성공"

# ESLint 검증 (설정 파일이 있는 경우만)
(cd "${FRONTEND_DIR}" && {
    if [ -f "eslint.config.js" ] || [ -f "eslint.config.mjs" ] || [ -f ".eslintrc.js" ] || [ -f ".eslintrc.json" ]; then
        echo "pre-commit: ESLint 검증 중..."
        npx eslint src/ --ext .ts,.tsx --quiet 2>&1
        LINT_RESULT=$?

        if [ $LINT_RESULT -ne 0 ]; then
            echo ""
            echo "╔══════════════════════════════════════════════════════════╗"
            echo "║  ESLint 에러! 커밋이 차단되었습니다.                    ║"
            echo "║  'npm run lint -- --fix'로 자동 수정을 시도해보세요.    ║"
            echo "╚══════════════════════════════════════════════════════════╝"
            echo ""
            exit 1
        fi

        echo "pre-commit: ESLint 통과"
    fi
})
