Convenience wrapper around `pnpm build:all` in packages/desktop that builds installers for mac/win/linux × arm64/x64 and collects the distributable artifacts into packages/desktop/installers/. Excluded from rsync deploy by deploy.sh.
54 lines
1.5 KiB
Bash
Executable File
54 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
||
# ============================================================
|
||
# Backspace — Electron Installer Build Script
|
||
# ============================================================
|
||
# Builds Electron installers for all platforms/architectures
|
||
# (macOS, Windows, Linux × arm64, x64) and copies the user-
|
||
# distributable artifacts into packages/desktop/installers/.
|
||
#
|
||
# Usage:
|
||
# ./electronbuild.sh
|
||
# ============================================================
|
||
|
||
set -euo pipefail
|
||
|
||
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
DESKTOP_DIR="$REPO_ROOT/packages/desktop"
|
||
DIST_DIR="$DESKTOP_DIR/dist-electron"
|
||
INSTALLERS_DIR="$DESKTOP_DIR/installers"
|
||
|
||
if [ ! -d "$DESKTOP_DIR" ]; then
|
||
echo "Error: $DESKTOP_DIR not found" >&2
|
||
exit 1
|
||
fi
|
||
|
||
echo "==> Building Electron installers (mac/win/linux × arm64/x64)..."
|
||
cd "$DESKTOP_DIR"
|
||
pnpm build:all
|
||
|
||
echo "==> Copying installers to $INSTALLERS_DIR"
|
||
mkdir -p "$INSTALLERS_DIR"
|
||
rm -f "$INSTALLERS_DIR"/*.dmg \
|
||
"$INSTALLERS_DIR"/*.exe \
|
||
"$INSTALLERS_DIR"/*.AppImage \
|
||
"$INSTALLERS_DIR"/*.deb \
|
||
"$INSTALLERS_DIR"/*.zip
|
||
|
||
shopt -s nullglob
|
||
copied=0
|
||
for ext in dmg exe AppImage deb zip; do
|
||
for f in "$DIST_DIR"/*."$ext"; do
|
||
cp "$f" "$INSTALLERS_DIR/"
|
||
copied=$((copied + 1))
|
||
done
|
||
done
|
||
shopt -u nullglob
|
||
|
||
if [ "$copied" -eq 0 ]; then
|
||
echo "Error: no installer artifacts found in $DIST_DIR" >&2
|
||
exit 1
|
||
fi
|
||
|
||
echo "==> Done. $copied installer(s) in $INSTALLERS_DIR:"
|
||
ls -lh "$INSTALLERS_DIR" | awk 'NR>1 {printf " %-40s %s\n", $9, $5}'
|