Files
overlord/plugins/sample-go/build.bat
T

101 lines
2.9 KiB
Batchfile
Raw Normal View History

2026-03-05 00:04:26 -06:00
@echo off
setlocal enabledelayedexpansion
2026-06-22 10:52:27 -05:00
set "PLUGIN_DIR=%~dp0."
2026-03-05 00:04:26 -06:00
if not "%~1"=="" set "PLUGIN_DIR=%~1"
2026-03-19 16:29:26 -05:00
set "NATIVE_DIR=%PLUGIN_DIR%\native"
2026-03-05 00:04:26 -06:00
set "PLUGIN_NAME=sample"
set "ZIP_OUT=%PLUGIN_DIR%\%PLUGIN_NAME%.zip"
2026-03-19 16:29:26 -05:00
if not exist "%NATIVE_DIR%" (
echo [error] native folder not found: %NATIVE_DIR%
2026-03-05 00:04:26 -06:00
exit /b 1
)
2026-03-19 16:29:26 -05:00
pushd "%NATIVE_DIR%"
2026-03-05 00:04:26 -06:00
2026-03-19 16:29:26 -05:00
REM Build targets - default to windows-amd64 on Windows
if not defined BUILD_TARGETS set "BUILD_TARGETS=windows-amd64"
set "BUILT_FILES="
for %%T in (%BUILD_TARGETS%) do (
for /f "tokens=1,2 delims=-" %%A in ("%%T") do (
set "TARGET_OS=%%A"
set "TARGET_ARCH=%%B"
)
if "!TARGET_OS!"=="windows" (
set "EXT=dll"
) else if "!TARGET_OS!"=="darwin" (
set "EXT=dylib"
) else (
set "EXT=so"
)
set "BUILDMODE=c-shared"
set "OUTFILE=%PLUGIN_DIR%\%PLUGIN_NAME%-!TARGET_OS!-!TARGET_ARCH!.!EXT!"
echo [build] GOOS=!TARGET_OS! GOARCH=!TARGET_ARCH! CGO_ENABLED=1 go build -buildmode=!BUILDMODE! -o "!OUTFILE!"
set "GOOS=!TARGET_OS!"
set "GOARCH=!TARGET_ARCH!"
set "CGO_ENABLED=1"
go build -buildmode=!BUILDMODE! -o "!OUTFILE!" .
2026-03-05 00:04:26 -06:00
if errorlevel 1 (
2026-03-19 16:29:26 -05:00
echo [error] build failed for !TARGET_OS!-!TARGET_ARCH!
2026-03-05 00:04:26 -06:00
popd
exit /b 1
)
2026-03-19 16:29:26 -05:00
set "BUILT_FILES=!BUILT_FILES! '%PLUGIN_DIR%\%PLUGIN_NAME%-!TARGET_OS!-!TARGET_ARCH!.!EXT!'"
2026-03-05 00:04:26 -06:00
)
2026-03-19 16:29:26 -05:00
set "GOOS="
set "GOARCH="
set "CGO_ENABLED="
2026-03-05 00:04:26 -06:00
popd
if exist "%ZIP_OUT%" del /f /q "%ZIP_OUT%"
2026-03-19 16:29:26 -05:00
REM Collect all build outputs and web assets
set "ZIP_SOURCES="
for %%T in (%BUILD_TARGETS%) do (
for /f "tokens=1,2 delims=-" %%A in ("%%T") do (
set "TARGET_OS=%%A"
set "TARGET_ARCH=%%B"
)
if "!TARGET_OS!"=="windows" (
set "ZIP_SOURCES=!ZIP_SOURCES!,'%PLUGIN_DIR%\%PLUGIN_NAME%-!TARGET_OS!-!TARGET_ARCH!.dll'"
) else if "!TARGET_OS!"=="darwin" (
set "ZIP_SOURCES=!ZIP_SOURCES!,'%PLUGIN_DIR%\%PLUGIN_NAME%-!TARGET_OS!-!TARGET_ARCH!.dylib'"
) else (
set "ZIP_SOURCES=!ZIP_SOURCES!,'%PLUGIN_DIR%\%PLUGIN_NAME%-!TARGET_OS!-!TARGET_ARCH!.so'"
)
)
REM Add web assets
if exist "%PLUGIN_DIR%\%PLUGIN_NAME%.html" set "ZIP_SOURCES=!ZIP_SOURCES!,'%PLUGIN_DIR%\%PLUGIN_NAME%.html'"
if exist "%PLUGIN_DIR%\%PLUGIN_NAME%.css" set "ZIP_SOURCES=!ZIP_SOURCES!,'%PLUGIN_DIR%\%PLUGIN_NAME%.css'"
if exist "%PLUGIN_DIR%\%PLUGIN_NAME%.js" set "ZIP_SOURCES=!ZIP_SOURCES!,'%PLUGIN_DIR%\%PLUGIN_NAME%.js'"
REM Remove leading comma
set "ZIP_SOURCES=!ZIP_SOURCES:~1!"
powershell -NoProfile -Command "Compress-Archive -Path !ZIP_SOURCES! -DestinationPath '%ZIP_OUT%'"
2026-03-05 00:04:26 -06:00
if errorlevel 1 (
echo [error] zip failed
exit /b 1
)
2026-04-14 09:56:20 -05:00
REM Optional: sign the plugin if PLUGIN_SIGN_KEY is set
if defined PLUGIN_SIGN_KEY (
where bun >nul 2>&1
if not errorlevel 1 (
echo [sign] Signing plugin with key: %PLUGIN_SIGN_KEY%
2026-06-22 10:52:27 -05:00
bun run "%~dp0..\..\Overlord-Server\scripts\plugin-sign.ts" --key "%PLUGIN_SIGN_KEY%" "%ZIP_OUT%"
2026-04-14 09:56:20 -05:00
) else (
echo [warn] bun not found, skipping plugin signing
)
)
2026-03-05 00:04:26 -06:00
echo [ok] %ZIP_OUT%