@echo off
setlocal EnableExtensions

set "script_dir=%~dp0"
set "current_dir=%CD%"
set "PROJ_ROOT="

REM First, check project level (one directory up from current) - most common case
for %%I in ("%current_dir%..") do set "project_level=%%~fI"
set "project_config=%project_level%\.config\config.json"
if exist "%project_config%" (
    set "PROJ_ROOT=%project_level%"
)

REM If not found at project level, search up from current working directory
if not defined PROJ_ROOT (
    for /f "usebackq delims=" %%I in (`powershell -NoProfile -ExecutionPolicy Bypass -Command "Set-StrictMode -Version Latest; $dir = '%current_dir%'; $found = $null; while ($dir -and -not $found) { $configPath = Join-Path $dir '.config\config.json'; if (Test-Path -LiteralPath $configPath) { $found = $dir; break }; $parent = Split-Path -Parent $dir; if ($parent -eq $dir) { break }; $dir = $parent }; if ($found) { Write-Output $found } else { Write-Output '' }"`) do set "PROJ_ROOT=%%I"
)

REM If still not found, try searching from script location
if not defined PROJ_ROOT (
    for /f "usebackq delims=" %%I in (`powershell -NoProfile -ExecutionPolicy Bypass -Command "Set-StrictMode -Version Latest; $dir = '%script_dir%'; $found = $null; while ($dir -and -not $found) { $configPath = Join-Path $dir '.config\config.json'; if (Test-Path -LiteralPath $configPath) { $found = $dir; break }; $parent = Split-Path -Parent $dir; if ($parent -eq $dir) { break }; $dir = $parent }; if ($found) { Write-Output $found } else { Write-Output '' }"`) do set "PROJ_ROOT=%%I"
)

REM Fallback: try original logic (script in 3 ProjectStructure)
if not defined PROJ_ROOT (
    for %%I in ("%script_dir%..\..") do set "PROJ_ROOT=%%~fI"
)

set "CONFIG_DIR=%PROJ_ROOT%\.config"
set "CONFIG_PATH=%CONFIG_DIR%\config.json"

if not exist "%CONFIG_PATH%" (
    echo [ERROR] config.json not found at %CONFIG_PATH%
    if defined project_config (
        echo Also checked: %project_config%
    )
    echo Please run ConfigLoader.ps1 to deploy helper files.
    exit /b 1
)

set "GET_STRUCT_DIR=%CONFIG_DIR%\GetStructDir.ps1"

if not exist "%GET_STRUCT_DIR%" (
    echo [ERROR] GetStructDir.ps1 not found at %GET_STRUCT_DIR%
    echo Please run ConfigLoader.ps1 to deploy helper files.
    exit /b 1
)

for /f "usebackq delims=" %%I in (`powershell -NoProfile -ExecutionPolicy Bypass -Command ^
    "Set-StrictMode -Version Latest; $structDir = & '%GET_STRUCT_DIR%' -ProjectRoot '%PROJ_ROOT%'; if (-not $structDir) { throw \"Failed to get structDir from GetStructDir.ps1\" }; $ps1Path = Join-Path $structDir 'UpdateSequences.ps1'; if (-not (Test-Path -LiteralPath $ps1Path)) { throw \"UpdateSequences.ps1 not found at $ps1Path\" }; Write-Output $ps1Path"`) do set "ps1=%%I"

if not defined ps1 (
    echo [ERROR] Unable to resolve UpdateSequences.ps1 path from config.
    exit /b 1
)

echo   Running PowerShell update script...
powershell -NoProfile -ExecutionPolicy Bypass -File "%ps1%"
set "rc=%errorlevel%"
echo PowerShell exited with RC=%rc%
echo Done.
pause >nul
exit /b %rc%
