@echo off
chcp 65001 >nul
title FaceFusion Kurulum
color 0A

set "BASE_DIR=%~dp0"
set "FF_DIR=%BASE_DIR%FaceFusion"
set "FF_REPO=%FF_DIR%\facefusion"
set "FF_VENV=%FF_DIR%\venv"

echo =========================================================
echo    FACEFUSION KURULUM - Face Swap Araci
echo =========================================================
echo.

rem --- Python 3.11 yolunu tespit et ---
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%" set "PY311=python"

"%PY311%" --version >nul 2>&1
if errorlevel 1 (
    color 0C
    echo [HATA] Python bulunamadi!
    echo Lutfen Python 3.10+ kurun.
    pause
    exit /b 1
)

echo [+] Python bulundu:
"%PY311%" --version
echo.

rem --- Git kontrol ---
git --version >nul 2>&1
if errorlevel 1 (
    color 0C
    echo [HATA] Git bulunamadi!
    echo Lutfen Git kurun: https://git-scm.com
    pause
    exit /b 1
)

echo [+] Git bulundu
echo.
pause

rem --- Ana klasor ---
if not exist "%FF_DIR%" mkdir "%FF_DIR%"

rem --- FaceFusion repo klonla ---
if not exist "%FF_REPO%\.git" (
    echo [1/4] FaceFusion indiriliyor...
    echo.
    git clone https://github.com/facefusion/facefusion.git "%FF_REPO%"
    if errorlevel 1 (
        color 0C
        echo [HATA] FaceFusion klonlanamadi!
        pause
        exit /b 1
    )
    echo [OK] FaceFusion indirildi.
) else (
    echo [1/4] FaceFusion zaten mevcut, guncelleniyor...
    cd /d "%FF_REPO%"
    git pull
    echo [OK] Guncellendi.
)

echo.

rem --- Sanal ortam ---
if not exist "%FF_VENV%\Scripts\python.exe" (
    echo [2/4] Sanal ortam olusturuluyor...
    "%PY311%" -m venv "%FF_VENV%"
    if errorlevel 1 (
        color 0C
        echo [HATA] Sanal ortam olusturulamadi!
        pause
        exit /b 1
    )
    echo [OK] Sanal ortam olusturuldu.
) else (
    echo [2/4] Sanal ortam zaten mevcut.
)

set "FF_PIP=%FF_VENV%\Scripts\pip.exe"
set "FF_PYTHON=%FF_VENV%\Scripts\python.exe"

echo.

rem --- Pip guncelle ---
echo [3/4] Bagimliliklar kuruluyor...
echo       Bu islem 5-15 dakika surebilir
echo.
"%FF_PYTHON%" -m pip install --upgrade pip

cd /d "%FF_REPO%"

rem --- requirements.txt varsa kur ---
if exist "requirements.txt" (
    echo.
    echo [3/4] requirements.txt kuruluyor...
    "%FF_PIP%" install -r requirements.txt
)

rem --- FaceFusion install.py ---
if exist "install.py" (
    echo.
    echo [3/4] FaceFusion install.py calistiriliyor...
    "%FF_PYTHON%" install.py --onnxruntime cuda
)

rem --- PyTorch CUDA ---
echo.
echo [4/4] PyTorch CUDA kuruluyor...
"%FF_PIP%" install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

rem --- Ek paketler ---
echo.
echo [4/4] Ek paketler kuruluyor...
"%FF_PIP%" install insightface onnx onnxruntime-gpu opencv-python-headless pillow numpy

echo.
echo =========================================================

if exist "%FF_PYTHON%" (
    color 0A
    echo    KURULUM TAMAMLANDI!
    echo.
    echo    Konum  : %FF_DIR%
    echo    Python : %FF_PYTHON%
    echo.
    echo    Artik Face-Swap-Uygula.bat kullanabilirsiniz.
) else (
    color 0C
    echo    KURULUM BASARISIZ!
    echo    Yukaridaki hatalari kontrol edin.
)

echo =========================================================
echo.
pause
