@echo off
chcp 65001 >nul
title LTX-Desktop-WanGP Kurulum (1-Click)
color 0B

REM ============================================================
REM  LTX-Desktop-WanGP Kurulum Scripti
REM  Hedef klasor: D:\__sistem__\Masaustu\FikoYT.Yeni.Cag\video-uretim\ltx-desktop-wangp
REM  Tum venv, modeller ve cache BU klasorde kalir.
REM  Sistem genelinde hicbir sey kurulmaz.
REM ============================================================

set "KOK=D:\__sistem__\Masaustu\FikoYT.Yeni.Cag\video-uretim"
set "LTX=%KOK%\ltx-desktop-wangp"
set "REPO=%LTX%\LTX-Desktop-WanGP"
set "HF_HOME=%LTX%\hf-cache"
set "HUGGINGFACE_HUB_CACHE=%LTX%\hf-cache"
set "TRANSFORMERS_CACHE=%LTX%\hf-cache"
set "TORCH_HOME=%LTX%\torch-cache"
set "XDG_CACHE_HOME=%LTX%\xdg-cache"

echo ========================================================
echo   LTX-Desktop-WanGP Kurulumu Baslatiliyor
echo ========================================================
echo.
echo Hedef klasor : %LTX%
echo Repo         : %REPO%
echo HF cache     : %HF_HOME%
echo.
echo  * Node.js 18+ ve pnpm gereklidir
echo  * Python 3.11 gereklidir (backend icin)
echo  * NVIDIA GPU + CUDA surucusu gereklidir
echo  * Toplam indirme: yaklasik 10-20 GB (modeller dahil)
echo  * Tahmini sure : 30-90 dakika (internet hizina bagli)
echo.
echo ========================================================
echo.
pause

REM --- Node.js kontrolu ---
where node >nul 2>&1
if errorlevel 1 (
    color 0C
    echo [HATA] Node.js bulunamadi!
    echo Lutfen https://nodejs.org/ adresinden Node.js 18+ kurun.
    echo Kurulumda "Add to PATH" secenegini isaretleyin.
    pause
    exit /b 1
)
for /f "tokens=*" %%v in ('node --version 2^>^&1') do set NODEVER=%%v
echo [OK] Node.js %NODEVER% bulundu.
echo.

REM --- pnpm kontrolu ve kurulumu ---
where pnpm >nul 2>&1
if errorlevel 1 (
    echo [BILGI] pnpm bulunamadi, kuruluyor...
    call npm install -g pnpm
    if errorlevel 1 (
        echo [HATA] pnpm kurulamadi!
        pause
        exit /b 1
    )
)
for /f "tokens=*" %%v in ('pnpm --version 2^>^&1') do set PNPMVER=%%v
echo [OK] pnpm %PNPMVER% bulundu.
echo.

REM --- Git kontrolu ---
where git >nul 2>&1
if errorlevel 1 (
    echo [HATA] Git bulunamadi. Git for Windows kurun:
    echo https://git-scm.com/download/win
    pause
    exit /b 1
)
echo [OK] Git bulundu.
echo.

REM --- Python 3.11 kontrolu ---
set "PY311=%LOCALAPPDATA%\Programs\Python\Python311\python.exe"
if not exist "%PY311%" set "PY311=C:\Program Files\Python311\python.exe"
if not exist "%PY311%" set "PY311=C:\Python311\python.exe"

if not exist "%PY311%" (
    color 0C
    echo [HATA] Python 3.11 bulunamadi!
    echo Lutfen https://www.python.org/downloads/release/python-3119/
    echo adresinden Python 3.11'i kurun.
    pause
    exit /b 1
)
echo [OK] Python 3.11 bulundu: %PY311%
"%PY311%" --version
echo.

REM --- NVIDIA GPU kontrolu ---
nvidia-smi >nul 2>&1
if errorlevel 1 (
    echo [UYARI] nvidia-smi calismadi. NVIDIA surucusu yuklu mu?
    echo Devam etmek isterseniz bir tusa basin, iptal icin Ctrl+C
    pause >nul
) else (
    echo [OK] NVIDIA GPU tespit edildi.
)
echo.

REM --- Klasorleri olustur ---
echo [1/6] Klasorler hazirlaniyor...
if not exist "%LTX%" mkdir "%LTX%"
if not exist "%HF_HOME%" mkdir "%HF_HOME%"
if not exist "%TORCH_HOME%" mkdir "%TORCH_HOME%"
echo [OK] Klasorler hazir.
echo.

cd /d "%LTX%"

REM --- LTX-Desktop-WanGP kaynak kodu ---
echo [2/6] LTX-Desktop-WanGP kaynak kodu indiriliyor...
if exist "%REPO%\.git" (
    echo     Mevcut klon bulundu, guncelleniyor...
    cd /d "%REPO%"
    git pull
    cd /d "%LTX%"
) else (
    git clone https://github.com/deepbeepmeep/LTX-Desktop-WanGP.git
    if errorlevel 1 (
        echo [HATA] Git clone basarisiz oldu. Internet baglantinizi kontrol edin.
        pause
        exit /b 1
    )
)
echo [OK] LTX-Desktop-WanGP kaynak kodu hazir.
echo.

cd /d "%REPO%"

REM --- Node.js bagimliliklari ---
echo [3/6] Node.js bagimliliklari kuruluyor (pnpm install)...
call pnpm install
if errorlevel 1 (
    echo [HATA] pnpm install basarisiz oldu!
    pause
    exit /b 1
)
echo [OK] Node.js bagimliliklari kuruldu.
echo.

REM --- Python 3.11'i PATH'in basina koy ---
set "PATH=%LOCALAPPDATA%\Programs\Python\Python311;%LOCALAPPDATA%\Programs\Python\Python311\Scripts;%PATH%"

REM --- Backend kurulumu (Wan2GP + venv) ---
echo [4/6] Backend kurulumu baslatiliyor (pnpm setup:dev:win)...
echo     Bu adim Wan2GP'yi klonlar ve Python venv olusturur.
echo     Birkac dakika surebilir...
echo.
call pnpm setup:dev:win
if errorlevel 1 (
    echo [UYARI] pnpm setup:dev:win hata verdi.
    echo     Manuel kurulum gerekebilir. Devam ediliyor...
    echo.
)
echo [OK] Backend kurulumu tamamlandi.
echo.

REM --- Wan2GP ek kurulum (setup.py varsa) ---
echo [5/6] Wan2GP ek bagimliliklari kontrol ediliyor...
if exist "%REPO%\Wan2GP\setup.py" (
    echo     Wan2GP setup.py bulundu, calistiriliyor...
    cd /d "%REPO%\Wan2GP"
    "%PY311%" setup.py install --env venv --auto
    cd /d "%REPO%"
) else (
    echo     Wan2GP setup.py bulunamadi, pnpm setup zaten halletti.
)
echo.

REM --- CUDA dogrulama ---
echo [6/6] CUDA dogrulaniyor...
set "VENV_PY=%REPO%\backend\.venv\Scripts\python.exe"
if not exist "%VENV_PY%" set "VENV_PY=%REPO%\Wan2GP\env_venv\Scripts\python.exe"
if not exist "%VENV_PY%" set "VENV_PY=%REPO%\Wan2GP\.venv\Scripts\python.exe"

if exist "%VENV_PY%" (
    "%VENV_PY%" -c "import torch; print('PyTorch:', torch.__version__); print('CUDA:', torch.cuda.is_available()); print('GPU:', torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'CPU')"
) else (
    echo [UYARI] Venv python bulunamadi, CUDA dogrulamasi atlanacak.
)
echo.

REM ============================================================
REM  CONFIG DOSYALARINI GUVENLI VARSAYILANLARA AYARLA
REM  wgp_config.json : attention=sage, compile=kapali, profil=4
REM  settings.json   : use_torch_compile=False
REM ============================================================
echo [BONUS] Config dosyalari guvenli varsayilanlara ayarlaniyor...
set "WGP_CONFIG=%REPO%\Wan2GP\wgp_config.json"
set "LTX_SETTINGS=%REPO%\settings.json"

if exist "%WGP_CONFIG%" (
    "%PY311%" -c "import json; p=r'%WGP_CONFIG%'; c=json.load(open(p,'r',encoding='utf-8')) if __import__('os').path.getsize(p)>0 else {}; c['attention_mode']='sage'; c['compile']=''; c['video_profile']=4; c['image_profile']=4; c['audio_profile']=4; json.dump(c,open(p,'w',encoding='utf-8'),indent=4); print('  [OK] wgp_config.json ayarlandi')"
)
if exist "%LTX_SETTINGS%" (
    "%PY311%" -c "import json; p=r'%LTX_SETTINGS%'; c=json.load(open(p,'r',encoding='utf-8')); c['use_torch_compile']=False; json.dump(c,open(p,'w',encoding='utf-8'),indent=2); print('  [OK] settings.json ayarlandi')"
)
echo.

REM ============================================================
REM  SAGEATTENTION v2 KURULUM DENEMESI (opsiyonel, hiz icin)
REM  VS 2022 BuildTools varsa otomatik kurar
REM ============================================================
set "VCVARS=C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
set "VCVARS_COMM=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
set "VCVARS_PROF=C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvars64.bat"

set "VCVARS_FOUND="
if exist "%VCVARS%" set "VCVARS_FOUND=%VCVARS%"
if exist "%VCVARS_COMM%" set "VCVARS_FOUND=%VCVARS_COMM%"
if exist "%VCVARS_PROF%" set "VCVARS_FOUND=%VCVARS_PROF%"

if exist "%REPO%\backend\install_sageattention.bat" (
    if defined VCVARS_FOUND (
        echo [BONUS] Visual Studio 2022 BuildTools bulundu.
        echo         SageAttention v2 kurulmak ister misiniz? (en hizli mod)
        echo         Kurulum 10-20 dakika surebilir.
        choice /C EH /N /M "         E=Evet kur / H=Hayir atla: "
        if errorlevel 2 (
            echo         [ATLA] SageAttention v2 kurulumu atlandi.
        ) else (
            echo         SageAttention v2 kuruluyor...
            call "%REPO%\backend\install_sageattention.bat"
            if not errorlevel 1 (
                echo         [OK] SageAttention v2 kuruldu. Config sage2'ye aliniyor...
                "%PY311%" -c "import json; p=r'%WGP_CONFIG%'; c=json.load(open(p,'r',encoding='utf-8')); c['attention_mode']='sage2'; json.dump(c,open(p,'w',encoding='utf-8'),indent=4)"
            )
        )
    ) else (
        echo [BILGI] Visual Studio 2022 BuildTools kurulu degil.
        echo         En hizli mod (sage2) icin opsiyonel:
        echo         https://visualstudio.microsoft.com/visual-cpp-build-tools/
        echo         'Desktop development with C++' workload'unu secin.
        echo         Kurduktan sonra: backend\install_sageattention.bat
    )
)
echo.

echo ========================================================
echo   KURULUM TAMAM!  (LTX-Desktop-WanGP)
echo ========================================================
echo.
echo LTX klasoru     : %REPO%
echo Model cache     : %HF_HOME%
echo.
echo Simdi "LTX-Desktop-WanGP-Baslat.bat" dosyasini cift
echo tiklayarak uygulamayi acabilirsiniz.
echo.
echo NOT: Ilk calistirmada modeller otomatik indirilir.
echo.
pause
