73 lines
2.4 KiB
Bash
Executable File
73 lines
2.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
OFFICIAL_PLUGINS="${VERSTAK_OFFICIAL_PLUGINS_DIR:-$ROOT/../verstak-official-plugins}"
|
|
WINDOWS_PLUGIN_DIST="${VERSTAK_WINDOWS_PLUGIN_DIST:-$OFFICIAL_PLUGINS/dist-windows}"
|
|
WINDOWS_OUTPUT="${VERSTAK_WINDOWS_OUTPUT_DIR:-$ROOT/build/windows-amd64}"
|
|
WINDOWS_CC="${VERSTAK_WINDOWS_CC:-x86_64-w64-mingw32-gcc}"
|
|
|
|
if ! command -v "$WINDOWS_CC" >/dev/null; then
|
|
echo "Windows cross-compiler not found: $WINDOWS_CC" >&2
|
|
echo "Install x86_64-w64-mingw32-gcc (for example: sudo apt install gcc-mingw-w64-x86-64)." >&2
|
|
exit 1
|
|
fi
|
|
if [[ ! -d "$OFFICIAL_PLUGINS" ]]; then
|
|
echo "official plugins repository not found: $OFFICIAL_PLUGINS" >&2
|
|
exit 1
|
|
fi
|
|
|
|
WAILS="${WAILS_BIN:-}"
|
|
if [[ -z "$WAILS" ]]; then
|
|
if command -v wails >/dev/null; then
|
|
WAILS="wails"
|
|
elif [[ -n "$(go env GOBIN 2>/dev/null)" && -x "$(go env GOBIN)/wails" ]]; then
|
|
WAILS="$(go env GOBIN)/wails"
|
|
elif [[ -x "$(go env GOPATH)/bin/wails" ]]; then
|
|
WAILS="$(go env GOPATH)/bin/wails"
|
|
fi
|
|
fi
|
|
if [[ -z "$WAILS" ]]; then
|
|
echo "Wails CLI is required. Install it with: go install github.com/wailsapp/wails/v2/cmd/wails@v2.12.0" >&2
|
|
exit 1
|
|
fi
|
|
|
|
cd "$ROOT"
|
|
echo "=== verstak desktop Windows amd64 build ==="
|
|
|
|
if [[ ! -d "$ROOT/frontend/node_modules" ]]; then
|
|
if [[ -f "$ROOT/frontend/package-lock.json" ]]; then
|
|
(cd "$ROOT/frontend" && npm ci --no-audit --no-fund)
|
|
else
|
|
(cd "$ROOT/frontend" && npm install --no-audit --no-fund)
|
|
fi
|
|
fi
|
|
(cd "$ROOT/frontend" && npm run build)
|
|
|
|
go mod download
|
|
go test -count=1 ./...
|
|
|
|
"$OFFICIAL_PLUGINS/scripts/build-windows.sh"
|
|
if [[ ! -d "$WINDOWS_PLUGIN_DIST" ]]; then
|
|
echo "Windows plugin packages were not produced: $WINDOWS_PLUGIN_DIST" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Wails generates Windows resources and invokes the supplied MinGW compiler.
|
|
# -clean resets build/bin, so copy the finished executable only afterwards.
|
|
"$WAILS" build -clean -platform windows/amd64 -compiler "$WINDOWS_CC" -o verstak-desktop.exe
|
|
|
|
WINDOWS_BINARY="$ROOT/build/bin/verstak-desktop.exe"
|
|
if [[ ! -f "$WINDOWS_BINARY" ]]; then
|
|
echo "Windows executable was not produced: $WINDOWS_BINARY" >&2
|
|
exit 1
|
|
fi
|
|
|
|
rm -rf "$WINDOWS_OUTPUT"
|
|
mkdir -p "$WINDOWS_OUTPUT/plugins"
|
|
cp "$WINDOWS_BINARY" "$WINDOWS_OUTPUT/verstak-desktop.exe"
|
|
cp -R "$WINDOWS_PLUGIN_DIST/." "$WINDOWS_OUTPUT/plugins/"
|
|
|
|
echo "Windows test bundle: $WINDOWS_OUTPUT"
|
|
echo "Copy this directory to Windows and run verstak-desktop.exe."
|