129 lines
3.0 KiB
Bash
Executable File
129 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
# ============================================================
|
|
# Verstak build script
|
|
# Usage: ./scripts/build.sh [gui|server|extensions|all]
|
|
# ============================================================
|
|
|
|
BUILD_DIR="build"
|
|
|
|
# --- GUI binary ---
|
|
|
|
build_gui() {
|
|
echo "==> Building GUI binary..."
|
|
|
|
# Build frontend
|
|
cd frontend && npm run build && cd ..
|
|
|
|
# Copy frontend dist to Wails embed directory
|
|
rm -rf cmd/verstak-gui/frontend-dist
|
|
mkdir -p cmd/verstak-gui/frontend-dist
|
|
cp -r frontend/dist/. cmd/verstak-gui/frontend-dist/
|
|
|
|
# Build Go binary with Wails v2
|
|
# Tags: webkit2_41 required for WebKitGTK 2.41+, desktop/production for Wails
|
|
go build -tags "webkit2_41 desktop production" -ldflags="-s -w" -o "$BUILD_DIR/verstak-gui-linux-amd64" ./cmd/verstak-gui/
|
|
|
|
echo "==> GUI binary: $BUILD_DIR/verstak-gui-linux-amd64"
|
|
}
|
|
|
|
# --- Server binary ---
|
|
|
|
build_server() {
|
|
echo "==> Building server binary..."
|
|
go build -ldflags="-s -w" -o "$BUILD_DIR/verstak-server-linux-amd64" ./cmd/verstak-server/
|
|
echo "==> Server binary: $BUILD_DIR/verstak-server-linux-amd64"
|
|
}
|
|
|
|
# --- Chrome extension ---
|
|
|
|
build_chrome_extension() {
|
|
echo "==> Building Chrome extension..."
|
|
|
|
local ext_dir="extension"
|
|
local out_file="$BUILD_DIR/verstak-bridge-chrome.zip"
|
|
|
|
if [ ! -d "$ext_dir" ]; then
|
|
echo "ERROR: $ext_dir/ directory not found"
|
|
return 1
|
|
fi
|
|
|
|
# Create a clean zip: manifest.json, background.js, popup/*, icons/*
|
|
cd "$ext_dir"
|
|
zip -r "../$out_file" \
|
|
manifest.json \
|
|
background.js \
|
|
popup/ \
|
|
icons/ \
|
|
-x "*/.DS_Store" "*/Thumbs.db" "*/__MACOSX/*" "*/.git/*"
|
|
cd ..
|
|
|
|
echo "==> Chrome extension: $out_file"
|
|
}
|
|
|
|
# --- Firefox extension ---
|
|
|
|
build_firefox_extension() {
|
|
echo "==> Building Firefox extension..."
|
|
|
|
local ext_dir="extension-firefox"
|
|
local out_file="$BUILD_DIR/verstak-bridge-firefox.xpi"
|
|
|
|
if [ ! -d "$ext_dir" ]; then
|
|
echo "ERROR: $ext_dir/ directory not found"
|
|
return 1
|
|
fi
|
|
|
|
# Firefox xpi is a zip with .xpi extension
|
|
# Must include manifest.json at root + icons
|
|
cd "$ext_dir"
|
|
zip -r "../$out_file" \
|
|
manifest.json \
|
|
background.js \
|
|
popup/ \
|
|
icons/ \
|
|
-x "*/.DS_Store" "*/Thumbs.db" "*/__MACOSX/*" "*/.git/*"
|
|
cd ..
|
|
|
|
echo "==> Firefox extension: $out_file"
|
|
}
|
|
|
|
# --- All extensions ---
|
|
|
|
build_extensions() {
|
|
mkdir -p "$BUILD_DIR"
|
|
build_chrome_extension
|
|
build_firefox_extension
|
|
echo "==> Extensions built."
|
|
ls -lh "$BUILD_DIR"/verstak-bridge-*
|
|
}
|
|
|
|
# --- Everything ---
|
|
|
|
build_all() {
|
|
mkdir -p "$BUILD_DIR"
|
|
build_gui
|
|
build_server
|
|
build_chrome_extension
|
|
build_firefox_extension
|
|
echo ""
|
|
echo "==> All builds complete."
|
|
ls -lh "$BUILD_DIR/"
|
|
}
|
|
|
|
# --- Main ---
|
|
|
|
case "${1:-all}" in
|
|
gui) build_gui ;;
|
|
server) build_server ;;
|
|
extensions) build_extensions ;;
|
|
chrome) mkdir -p "$BUILD_DIR"; build_chrome_extension ;;
|
|
firefox) mkdir -p "$BUILD_DIR"; build_firefox_extension ;;
|
|
all) build_all ;;
|
|
*)
|
|
echo "Usage: $0 [gui|server|extensions|chrome|firefox|all]"
|
|
exit 1
|
|
;;
|
|
esac
|