134 lines
4.5 KiB
Batchfile
134 lines
4.5 KiB
Batchfile
@echo off
|
|
setlocal EnableExtensions EnableDelayedExpansion
|
|
title AetherForge — Pack USB
|
|
cd /d "%~dp0"
|
|
set "ROOT=%CD%"
|
|
set "USB=%ROOT%\USB"
|
|
|
|
echo.
|
|
echo ================================================================
|
|
echo AetherForge — Pack Portable USB
|
|
echo ================================================================
|
|
echo.
|
|
echo This script builds AetherForge.exe and assembles everything
|
|
echo needed to run the Control Deck from a USB drive.
|
|
echo.
|
|
echo Output folder: %USB%\
|
|
echo.
|
|
|
|
:: ----------------------------------------------------------------
|
|
:: 0. Check prerequisites
|
|
:: ----------------------------------------------------------------
|
|
where go >nul 2>nul
|
|
if errorlevel 1 (
|
|
echo ERROR: Go not found on PATH.
|
|
echo Install from https://go.dev/dl/ or add it to PATH.
|
|
pause
|
|
exit /b 1
|
|
)
|
|
where npm >nul 2>nul
|
|
if errorlevel 1 (
|
|
echo WARNING: npm not found. Skipping frontend build.
|
|
set "SKIP_FRONTEND=1"
|
|
)
|
|
|
|
:: ----------------------------------------------------------------
|
|
:: 1. Build the frontend (if npm available)
|
|
:: ----------------------------------------------------------------
|
|
if not defined SKIP_FRONTEND (
|
|
echo [1/4] Building frontend...
|
|
cd "%ROOT%\server\web"
|
|
call npm install --silent
|
|
call npm run build
|
|
if errorlevel 1 (
|
|
echo ERROR: Frontend build failed.
|
|
cd "%ROOT%"
|
|
pause
|
|
exit /b 1
|
|
)
|
|
cd "%ROOT%"
|
|
echo [1/4] Frontend built.
|
|
) else (
|
|
echo [1/4] Skipped (npm not found).
|
|
)
|
|
|
|
:: ----------------------------------------------------------------
|
|
:: 2. Build AetherForge.exe for the current machine (amd64 windows)
|
|
:: ----------------------------------------------------------------
|
|
echo [2/4] Compiling AetherForge.exe...
|
|
cd "%ROOT%\server"
|
|
set "CGO_ENABLED=0"
|
|
set "GOOS=windows"
|
|
set "GOARCH=amd64"
|
|
go build -ldflags="-s -w" -o "%USB%\AetherForge.exe" .
|
|
if errorlevel 1 (
|
|
echo ERROR: Go build failed.
|
|
cd "%ROOT%"
|
|
pause
|
|
exit /b 1
|
|
)
|
|
cd "%ROOT%"
|
|
echo [2/4] AetherForge.exe -> USB\AetherForge.exe
|
|
|
|
:: ----------------------------------------------------------------
|
|
:: 3. Copy webroot
|
|
:: ----------------------------------------------------------------
|
|
echo [3/4] Copying webroot...
|
|
if exist "%ROOT%\server\webroot" (
|
|
if exist "%USB%\webroot" rd /s /q "%USB%\webroot"
|
|
xcopy /e /i /q "%ROOT%\server\webroot" "%USB%\webroot" >nul
|
|
echo [3/4] webroot copied.
|
|
) else if exist "%ROOT%\server\web\dist" (
|
|
if exist "%USB%\webroot" rd /s /q "%USB%\webroot"
|
|
xcopy /e /i /q "%ROOT%\server\web\dist" "%USB%\webroot" >nul
|
|
echo [3/4] webroot copied from web\dist.
|
|
) else (
|
|
echo [3/4] WARNING: No webroot found. Run 'npm run build' in server\web\ first.
|
|
)
|
|
|
|
:: ----------------------------------------------------------------
|
|
:: 4. Copy source trees (needed for Forge to compile agents on the USB)
|
|
:: ----------------------------------------------------------------
|
|
echo [4/4] Copying agent + fusion source...
|
|
|
|
if exist "%USB%\agent" rd /s /q "%USB%\agent"
|
|
if exist "%USB%\fusion" rd /s /q "%USB%\fusion"
|
|
|
|
:: Copy agent source, excluding test results and build outputs
|
|
xcopy /e /i /q /EXCLUDE:"%ROOT%\usb_pack_exclude.txt" "%ROOT%\agent" "%USB%\agent" >nul
|
|
xcopy /e /i /q /EXCLUDE:"%ROOT%\usb_pack_exclude.txt" "%ROOT%\fusion" "%USB%\fusion" >nul
|
|
echo [4/4] Source trees copied.
|
|
|
|
:: ----------------------------------------------------------------
|
|
:: 5. Ensure data directories exist on USB
|
|
:: ----------------------------------------------------------------
|
|
if not exist "%USB%\data\builds" mkdir "%USB%\data\builds"
|
|
if not exist "%USB%\data\logs" mkdir "%USB%\data\logs"
|
|
if not exist "%USB%\data\blueprints" mkdir "%USB%\data\blueprints"
|
|
if not exist "%USB%\data\preps" mkdir "%USB%\data\preps"
|
|
|
|
:: ----------------------------------------------------------------
|
|
:: 6. Summary
|
|
:: ----------------------------------------------------------------
|
|
echo.
|
|
echo ================================================================
|
|
echo USB pack complete!
|
|
echo.
|
|
echo Contents of %USB%\:
|
|
dir /b "%USB%"
|
|
echo.
|
|
echo To use:
|
|
echo 1. Copy the entire USB\ folder to a USB drive (or another PC)
|
|
echo 2. Double-click LAUNCH.bat
|
|
echo 3. Open http://localhost:8989 in a browser
|
|
echo.
|
|
echo Toolchain note:
|
|
echo If Go is not installed on the target PC, LAUNCH.bat will
|
|
echo download it automatically on first run and save it to
|
|
echo USB\toolchain\ for future use.
|
|
echo ================================================================
|
|
echo.
|
|
|
|
pause
|
|
endlocal
|