#!/bin/bash
# CEN Engine Linux Installer / Updater
# 사용법: chmod +x install_linux.sh && ./install_linux.sh

set -e

S3_VERSION_URL="https://cen-software.s3.ap-northeast-2.amazonaws.com/version.json"
S3_DOWNLOAD_URL="https://cen-software.s3.ap-northeast-2.amazonaws.com/CEN_Linux.zip"
INSTALL_DIR="$HOME/.local/share/CENEngine"
VERSION_FILE="$INSTALL_DIR/installed_version.txt"
DESKTOP_FILE="$HOME/.local/share/applications/cen-engine.desktop"

echo "========================================"
echo "  CEN Engine Linux 설치/업데이트"
echo "========================================"
echo ""

# 현재 버전 확인
if [ -f "$VERSION_FILE" ]; then
    CURRENT_VERSION=$(cat "$VERSION_FILE" | tr -d '[:space:]')
    echo "현재 설치 버전: v$CURRENT_VERSION"
else
    CURRENT_VERSION="0.0.0"
    echo "CEN Engine이 설치되지 않았습니다."
fi

# 최신 버전 확인
echo "최신 버전 확인 중..."
LATEST_INFO=$(curl -s "$S3_VERSION_URL" 2>/dev/null || echo "")
if [ -z "$LATEST_INFO" ]; then
    echo "서버 연결 실패. 나중에 다시 시도해주세요."
    exit 1
fi

LATEST_VERSION=$(echo "$LATEST_INFO" | python3 -c "import sys,json; print(json.load(sys.stdin)['version'])" 2>/dev/null || echo "")
if [ -z "$LATEST_VERSION" ]; then
    echo "버전 정보 파싱 실패."
    exit 1
fi
echo "최신 버전: v$LATEST_VERSION"

# 버전 비교
if [ "$CURRENT_VERSION" = "$LATEST_VERSION" ]; then
    echo ""
    echo "이미 최신 버전입니다."
    exit 0
fi

echo ""
echo "새 버전이 있습니다! v$CURRENT_VERSION -> v$LATEST_VERSION"
read -p "설치를 진행하시겠습니까? (y/N): " CONFIRM
if [ "$CONFIRM" != "y" ] && [ "$CONFIRM" != "Y" ]; then
    echo "설치를 취소했습니다."
    exit 0
fi

# 다운로드
TEMP_DIR=$(mktemp -d)
TEMP_ZIP="$TEMP_DIR/CEN_Linux.zip"

echo ""
echo "다운로드 중..."
curl -L --progress-bar -o "$TEMP_ZIP" "$S3_DOWNLOAD_URL"

# 설치
echo "설치 중..."
mkdir -p "$INSTALL_DIR"
unzip -o "$TEMP_ZIP" -d "$INSTALL_DIR"
echo "$LATEST_VERSION" > "$VERSION_FILE"

# 실행 권한
find "$INSTALL_DIR" -name "*.sh" -exec chmod +x {} \;
find "$INSTALL_DIR" -type f -executable -exec chmod +x {} \;

# 데스크톱 파일 생성 (cen-engine:// 프로토콜 핸들러)
mkdir -p "$(dirname "$DESKTOP_FILE")"
cat > "$DESKTOP_FILE" << 'DESKTOP'
[Desktop Entry]
Name=CEN Engine
Comment=AI 합성 데이터 시뮬레이터
Exec=INSTALL_DIR_PLACEHOLDER/CENEngine %u
Terminal=false
Type=Application
Categories=Development;Science;
MimeType=x-scheme-handler/cen-engine;
DESKTOP

sed -i "s|INSTALL_DIR_PLACEHOLDER|$INSTALL_DIR|g" "$DESKTOP_FILE"

# 프로토콜 핸들러 등록
xdg-mime default cen-engine.desktop x-scheme-handler/cen-engine 2>/dev/null || true
update-desktop-database "$HOME/.local/share/applications" 2>/dev/null || true

# 정리
rm -rf "$TEMP_DIR"

echo ""
echo "========================================"
echo "  CEN Engine v$LATEST_VERSION 설치 완료!"
echo "========================================"
echo ""
echo "설치 경로: $INSTALL_DIR"
echo ""
