@echo off
setlocal

REM ─── Validate argument ───────────────────────────────────────────────────────
if "%~1"=="force"   set "build_option=--build=*"   & goto :start
if "%~1"=="missing" set "build_option=--build=missing" & goto :start

echo Usage: %~n0 [force^|missing]
echo   force   - Rebuild all packages from source
echo   missing - Only build packages not already cached
exit /b 1

:start
REM ─── Register remote (skip if already registered) ────────────────────────────
conan remote list | findstr /i "bigfootpackages" >nul 2>&1
if errorlevel 1 (
    echo Adding Conan remote: bigfootpackages
    conan remote add bigfootpackages https://conan.romainboullard.com/artifactory/api/conan/BigfootPackages
    if errorlevel 1 (
        echo ERROR: Failed to add Conan remote.
        exit /b 1
    )
) else (
    echo Conan remote 'bigfootpackages' already registered, skipping.
)

REM ─── Shared flags ────────────────────────────────────────────────────────────
set "conan_common=--remote=bigfootpackages -pr:h=./ConanProfiles/msvc -pr:b=./ConanProfiles/Tools/msvc -of build-windows -o bigfoot/*:build_tests=True -o bigfoot/*:build_benchmarks=True -o bigfoot/*:tracy=True -o bigfoot/*:vulkan=True"

REM ─── Install dependencies for each build type ────────────────────────────────
for %%C in (Release RelWithDebInfo Debug) do (
    echo.
    echo [%%C] Installing dependencies...
    conan install . %conan_common% %build_option% -s:h build_type=%%C
    if errorlevel 1 (
        echo ERROR: conan install failed for build type %%C
        exit /b 1
    )
    echo [%%C] Done.
)

echo.
echo All build types installed successfully.

REM ─── Activate build environment and run CMake ────────────────────────────────
echo.
echo Activating build environment and configuring CMake...
mkdir graphviz-windows 2>nul

powershell -ExecutionPolicy Bypass -Command "& 'build-windows/build/generators/conanbuild.ps1'; cmake -S . -B build-windows --toolchain build-windows/build/generators/conan_toolchain.cmake --graphviz=graphviz-windows/graph.dot; if ($LASTEXITCODE -ne 0) { Write-Host 'ERROR: CMake configuration failed'; exit 1 }"

if errorlevel 1 (
    echo ERROR: Build environment or CMake step failed.
    exit /b 1
)

echo.
echo CMake configuration successful.

endlocal