@echo off
setlocal enabledelayedexpansion

set TARGET=x64Clang-Release

REM Chemin relatif vers JulietShaderCompiler.exe
set COMPILER_PATH=bin\%TARGET%\JulietShaderCompiler.exe
echo Compiler Path: !COMPILER_PATH!

REM --- GESTION D'ERREUR : Vérification du compilateur ---
if not exist "!COMPILER_PATH!" (
    echo.
    echo ERREUR : Le compilateur est introuvable au chemin : !COMPILER_PATH!
    echo Assurez-vous d'avoir bien bati le projet JulietShaderCompiler.
    pause
    exit /b 1
)

REM Dossier source contenant les fichiers .frag.hlsl et .vert.hlsl
set SOURCE_DIR=Assets\source
echo Source Dir: !SOURCE_DIR!

REM --- GESTION D'ERREUR : Vérification du dossier source ---
if not exist "!SOURCE_DIR!" (
    echo.
    echo ERREUR : Le dossier source est introuvable : !SOURCE_DIR!
    pause
    exit /b 1
)

REM Dossier de sortie pour les fichiers compilés
set OUTPUT_DIR=Assets\compiled
echo Output Dir: !OUTPUT_DIR!

REM Créer le dossier de sortie s'il n'existe pas
if not exist "%OUTPUT_DIR%" mkdir "%OUTPUT_DIR%"

REM Parcourir tous les fichiers .hlsl dans le dossier source
for %%F in ("%SOURCE_DIR%\*.hlsl") do (
    set "FULL_FILENAME=%%~nF%%~xF"
    
    REM Skip RootConstants.hlsl or other include files
    if /I NOT "!FULL_FILENAME!"=="RootConstants.hlsl" (
        REM Detect stage from filename (.vert.hlsl, .frag.hlsl)
        set "SHORT_EXTENSION="
        set "BASE_NAME=%%~nF"
        
        echo !FULL_FILENAME! | findstr /I "\.frag\.hlsl" >nul
        if !ERRORLEVEL! EQU 0 (
            set "SHORT_EXTENSION=frag"
            set "BASE_NAME=!BASE_NAME:.frag=!"
        ) else (
            echo !FULL_FILENAME! | findstr /I "\.vert\.hlsl" >nul
            if !ERRORLEVEL! EQU 0 (
                set "SHORT_EXTENSION=vert"
                set "BASE_NAME=!BASE_NAME:.vert=!"
            )
        )

        if not "!SHORT_EXTENSION!"=="" (
            set "OUTPUT_FILE=%OUTPUT_DIR%\%%~nF.dxil"
            set "COMMAND=%COMPILER_PATH% %%F -o !OUTPUT_FILE!"
            
            echo Compiling: %%F to !OUTPUT_FILE!
            !COMMAND!
            
            if errorlevel 1 (
                echo ERREUR lors de la compilation de %%F
            )
        )
    )
)

echo.
echo Operation terminee.
endlocal