#!/bin/bash
# ============================================================
# install-mac.sh — CEP ZXP 확장 설치 스크립트 (macOS)
# ============================================================
# 사용법: ./install-mac.sh [zxp파일경로]
# ============================================================

set -e

# ===================== 설정 =====================
EXTENSION_ID="videoPlus"   # manifest.xml의 Extension Id
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
ZXP_FILE="${1:-${SCRIPT_DIR}/${EXTENSION_ID}.zxp}"       # 인자로 받거나 스크립트 폴더 기준 기본값 사용

# CEP 확장 설치 경로 (유저 레벨)
INSTALL_DIR="$HOME/Library/Application Support/Adobe/CEP/extensions/${EXTENSION_ID}"

# 지원할 CSXS 버전 범위 (CEP 9~12)
CSXS_VERSIONS=(9 10 11 12)
# ================================================

echo ""
echo "============================================"
echo "  CEP Extension Installer (macOS)"
echo "============================================"
echo ""

# ZXP 파일 확인
if [ ! -f "$ZXP_FILE" ]; then
    echo "❌ ZXP 파일을 찾을 수 없습니다: $ZXP_FILE"
    echo ""
    echo "사용법: ./install-mac.sh [zxp파일경로]"
    echo "예시:   ./install-mac.sh com.saida.premiere-plugin.zxp"
    exit 1
fi

echo "📦 ZXP 파일: $ZXP_FILE"
echo "📂 설치 경로: $INSTALL_DIR"
echo ""

# Premiere Pro 실행 중인지 확인
if pgrep -x "Adobe Premiere Pro" > /dev/null 2>&1; then
    echo "⚠️  Adobe Premiere Pro가 실행 중입니다."
    read -p "   설치를 계속하려면 Premiere Pro를 종료해야 합니다. 종료할까요? (y/n): " choice
    if [ "$choice" = "y" ] || [ "$choice" = "Y" ]; then
        echo "   Premiere Pro 종료 중..."
        osascript -e 'quit app "Adobe Premiere Pro"'
        sleep 3
    else
        echo "   Premiere Pro를 수동으로 종료한 후 다시 실행해주세요."
        exit 1
    fi
fi

# 기존 확장 백업 및 제거
if [ -d "$INSTALL_DIR" ]; then
    echo "🔄 기존 버전 발견 — 백업 후 제거합니다."
    BACKUP_DIR="${INSTALL_DIR}.backup.$(date +%Y%m%d%H%M%S)"
    mv "$INSTALL_DIR" "$BACKUP_DIR"
    echo "   백업 위치: $BACKUP_DIR"
fi

# 설치 디렉토리 생성
mkdir -p "$INSTALL_DIR"

# ZXP 압축 해제 (ZXP는 ZIP 포맷)
echo "📂 확장 설치 중..."
unzip -o -q "$ZXP_FILE" -d "$INSTALL_DIR"

if [ $? -ne 0 ]; then
    echo "❌ ZXP 압축 해제 실패!"
    # 백업 복원
    if [ -d "$BACKUP_DIR" ]; then
        rm -rf "$INSTALL_DIR"
        mv "$BACKUP_DIR" "$INSTALL_DIR"
        echo "   이전 버전으로 복원했습니다."
    fi
    exit 1
fi

# 불필요한 서명 파일 정리 (선택사항)
rm -f "$INSTALL_DIR/mimetype" 2>/dev/null || true

# ffmpeg 바이너리 실행 권한 + quarantine 제거
if [ -f "$INSTALL_DIR/bin/ffmpeg" ]; then
    chmod +x "$INSTALL_DIR/bin/ffmpeg"
    xattr -dr com.apple.quarantine "$INSTALL_DIR/bin/ffmpeg" 2>/dev/null || true
    echo "   ✅ ffmpeg 실행 권한 설정 완료"
fi

# PlayerDebugMode 활성화 (자체 서명 인증서 사용 시 필요)
echo "🔧 PlayerDebugMode 활성화 중..."
for version in "${CSXS_VERSIONS[@]}"; do
    defaults write com.adobe.CSXS.${version} PlayerDebugMode 1
    echo "   ✅ CSXS.${version} PlayerDebugMode = 1"
done

# 설치 확인
if [ -f "$INSTALL_DIR/CSXS/manifest.xml" ]; then
    echo ""
    echo "============================================"
    echo "  ✅ 설치 완료!"
    echo "============================================"
    echo ""
    echo "  확장 ID: $EXTENSION_ID"
    echo "  설치 경로: $INSTALL_DIR"
    echo ""
    echo "  👉 Adobe Premiere Pro를 (재)시작한 후"
    echo "     메뉴 > 창(Window) > 확장(Extensions)에서"
    echo "     플러그인을 찾을 수 있습니다."
    echo ""

    # 백업 정리 안내
    if [ -d "$BACKUP_DIR" ]; then
        echo "  ℹ️  이전 버전 백업: $BACKUP_DIR"
        echo "     문제가 없으면 삭제해도 됩니다."
        echo ""
    fi
else
    echo ""
    echo "❌ 설치에 문제가 있을 수 있습니다."
    echo "   $INSTALL_DIR/CSXS/manifest.xml 파일을 확인해주세요."
    exit 1
fi
