@echo off
chcp 65001 >nul
title ACE-Step 1.5 Kurulum (CUDA - NVIDIA)
color 0B

REM ============================================================
REM  ACE-Step 1.5 Kurulum Scripti
REM  Hedef klasor: D:\__sistem__\Masaustu\FikoYT.Yeni.Cag\video-uretim\ace-step
REM  Eski ACE-Step v1.0 varsa silinir, v1.5 kurulur.
REM  Tum modeller, venv ve cache BU klasorde kalir.
REM  Sistem genelinde hicbir sey kurulmaz.
REM ============================================================

set "KOK=D:\__sistem__\Masaustu\FikoYT.Yeni.Cag\video-uretim"
set "ACE=%KOK%\ace-step"
set "REPO=%ACE%\ACE-Step-1.5"
set "VENV=%ACE%\.venv"
set "HF_HOME=%ACE%\hf-cache"
set "HUGGINGFACE_HUB_CACHE=%ACE%\hf-cache"
set "TRANSFORMERS_CACHE=%ACE%\hf-cache"
set "TORCH_HOME=%ACE%\torch-cache"
set "XDG_CACHE_HOME=%ACE%\xdg-cache"

echo ========================================================
echo   ACE-Step 1.5 Kurulumu Baslatiliyor
echo ========================================================
echo.
echo Hedef klasor : %ACE%
echo Repo         : %REPO%
echo HF cache     : %HF_HOME%
echo.

REM --- Python kontrolu ---
where python >nul 2>&1
if errorlevel 1 (
    echo [HATA] Python bulunamadi. Python 3.11 veya 3.12 kurmaniz gerekiyor.
    echo Indirme: https://www.python.org/downloads/
    pause
    exit /b 1
)

for /f "tokens=2" %%v in ('python --version 2^>^&1') do set PYVER=%%v
echo [OK] Python %PYVER% 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 --- 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 --- Eski ACE-Step v1.0 temizligi ---
if exist "%ACE%\ACE-Step" (
    echo [TEMIZLIK] Eski ACE-Step v1.0 klasoru siliniyor...
    rmdir /s /q "%ACE%\ACE-Step"
    echo [OK] Eski surum silindi.
    echo.
)
if exist "%VENV%" (
    echo [TEMIZLIK] Eski sanal ortam siliniyor (v1.5 icin yenisi olusturulacak^)...
    rmdir /s /q "%VENV%"
    echo [OK] Eski venv silindi.
    echo.
)

REM --- Klasorleri olustur ---
echo [1/7] Klasorler hazirlaniyor...
if not exist "%ACE%" mkdir "%ACE%"
if not exist "%HF_HOME%" mkdir "%HF_HOME%"
if not exist "%TORCH_HOME%" mkdir "%TORCH_HOME%"
if not exist "%ACE%\outputs" mkdir "%ACE%\outputs"
echo [OK] Klasorler hazir.
echo.

cd /d "%ACE%"

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

REM --- Sanal ortam ---
echo [3/7] Python sanal ortami olusturuluyor...
python -m venv "%VENV%"
if errorlevel 1 (
    echo [HATA] venv olusturulamadi.
    pause
    exit /b 1
)
echo [OK] venv hazir: %VENV%
echo.

REM --- venv aktivasyonu ---
echo [4/7] Sanal ortam aktive ediliyor ve pip guncelleniyor...
call "%VENV%\Scripts\activate.bat"
python -m pip install --upgrade pip setuptools wheel
echo.

REM --- PyTorch CUDA ---
echo [5/7] PyTorch (CUDA) kuruluyor... Bu adim birkac GB indirir.
pip install torch==2.7.1 torchvision==0.22.1 torchaudio==2.7.1 --index-url https://download.pytorch.org/whl/cu128
if errorlevel 1 (
    echo [UYARI] cu128 basarisiz, cu124 deneniyor...
    pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu124
    if errorlevel 1 (
        echo [HATA] PyTorch kurulamadi. Internet baglantinizi kontrol edin.
        pause
        exit /b 1
    )
)
echo [OK] PyTorch CUDA kuruldu.
echo.

REM --- ACE-Step 1.5 bagimliliklari ---
echo [6/7] ACE-Step 1.5 bagimliliklari kuruluyor...
cd /d "%REPO%"
pip install -e .
if errorlevel 1 (
    echo [UYARI] "pip install -e ." basarisiz. requirements.txt deneniyor...
    if exist requirements.txt (
        pip install -r requirements.txt
    )
)

REM Ek paketler (guvence)
pip install "gradio>=6.0" "huggingface_hub>=0.23" safetensors accelerate einops
pip install soundfile scipy loguru "transformers>=4.51.0" diffusers peft
pip install numba toml modelscope
echo [OK] Bagimliliklar kuruldu.
echo.

cd /d "%ACE%"

REM --- CUDA dogrulama ---
echo [7/7] CUDA dogrulaniyor...
python -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')"
echo.

echo ========================================================
echo   KURULUM TAMAM!  (ACE-Step 1.5)
echo ========================================================
echo.
echo ACE-Step klasoru : %REPO%
echo Model cache      : %HF_HOME%
echo.
echo Simdi "ACE-Step-Baslat.bat" dosyasini cift tiklayarak
echo web arayuzunu acabilirsiniz.
echo.
echo NOT: Ilk calistirmada modeller otomatik indirilir (~10 GB).
echo Turkce dahil 50+ dil desteklenir!
echo.
pause
