@echo off
setlocal

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

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"
        )
    )
)

:: Set Defaults
set "COMPILER_TYPE=clang"
set "CONFIG=Debug"

:: Check if the first argument is a Configuration instead of a Compiler
if /I "%ARG1%"=="Release" (
    set "CONFIG=Release"
) else if /I "%ARG1%"=="Profile" (
    set "CONFIG=Profile"
) else if /I "%ARG1%"=="Debug" (
    set "CONFIG=Debug"
) else if /I "%ARG1%"=="msvc" (
    set "COMPILER_TYPE=msvc"
    if not "%ARG2%"=="" set "CONFIG=%ARG2%"
) else if /I "%ARG1%"=="clang" (
    set "COMPILER_TYPE=clang"
    if not "%ARG2%"=="" set "CONFIG=%ARG2%"
)

:: --- 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%"
set "APP_EXE=JulietApp.exe"

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