@echo off
setlocal

:: --- 1. Argument Parsing Logic ---
set "ARG1="
set "ARG2="
set "ARG3="
set "AUTOCLOSE=0"
set "CUSTOM_EXE="

for %%x in (%*) do (
    if /I "%%~x"=="autoclose" (
        set "AUTOCLOSE=1"
    ) else (
        if not defined ARG1 (
            set "ARG1=%%~x"
        ) else if not defined ARG2 (
            set "ARG2=%%~x"
        ) else if not defined ARG3 (
            set "ARG3=%%~x"
        )
    )
)

:: Set Defaults
set "COMPILER_TYPE=clang"
set "CONFIG=Debug"
set "APP_EXE=JulietApp.exe"

:: Check for Configuration, Compiler, or custom EXE name
:: (Assuming the custom EXE name is passed as the final argument if needed)
for %%i in (%ARG1% %ARG2% %ARG3%) do (
    if /I "%%i"=="Release" set "CONFIG=Release"
    if /I "%%i"=="Profile" set "CONFIG=Profile"
    if /I "%%i"=="Debug"   set "CONFIG=Debug"
    if /I "%%i"=="msvc"    set "COMPILER_TYPE=msvc"
    if /I "%%i"=="clang"   set "COMPILER_TYPE=clang"
    
    :: If argument contains .exe, treat it as the target executable name
    echo %%i | findstr /i ".exe" >nul && set "APP_EXE=%%i"
)

:: --- 2. Map Compiler to Platform ---
if /I "%COMPILER_TYPE%"=="clang" (
    set "PLATFORM=x64Clang"
) else (
    set "PLATFORM=x64"
)

:: --- 3. Construct Paths ---
set "APP_DIR=bin\%PLATFORM%-%CONFIG%"

echo --- Launching %APP_EXE% ---
echo Platform: %PLATFORM%
echo Config:   %CONFIG%

:: --- 4. Execution ---
if exist "%APP_DIR%\%APP_EXE%" (
    pushd "%APP_DIR%"
    "%APP_EXE%" %*
    popd
) else (
    echo [ERROR] Executable not found at: %APP_DIR%\%APP_EXE%
    echo Please build first: fbuild JulietApp-%PLATFORM%-%CONFIG%
    pause
)

endlocal