Files
Stirling-PDF/frontend/scripts/dev-update-test/serve-update.sh
T
2026-06-02 23:11:37 +01:00

67 lines
2.5 KiB
Bash

#!/usr/bin/env bash
# Starts a local HTTP server on port 8090 serving an update manifest.
#
# If a real signed build exists in .update-dist/ (produced by build-dev-update.sh),
# it is served automatically — enabling the full download + install flow.
# Otherwise a placeholder manifest is served, which is enough to test the UI only.
set -euo pipefail
PORT=8090
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
DIST_DIR="$SCRIPT_DIR/.update-dist"
if [ -f "$DIST_DIR/latest.json" ]; then
# ── real signed build ─────────────────────────────────────────────────────
SERVE_DIR="$DIST_DIR"
VERSION="$(python3 -c "import json; print(json.load(open('$DIST_DIR/latest.json'))['version'])" 2>/dev/null || grep -o '"version":"[^"]*"' "$DIST_DIR/latest.json" | head -1 | cut -d'"' -f4)"
echo "Serving real signed build from .update-dist/"
echo " version : $VERSION"
echo " manifest: http://localhost:$PORT/latest.json"
echo " install : full download + verify flow will work"
else
# ── placeholder (UI testing only) ─────────────────────────────────────────
SERVE_DIR="$(mktemp -d)"
VERSION="99.0.0"
OS="$(uname -s)"
ARCH="$(uname -m)"
case "$OS" in
Linux) TAURI_PLATFORM="linux-x86_64" ;;
Darwin)
case "$ARCH" in
arm64) TAURI_PLATFORM="darwin-aarch64" ;;
*) TAURI_PLATFORM="darwin-x86_64" ;;
esac ;;
*) TAURI_PLATFORM="windows-x86_64" ;;
esac
PUB_DATE="$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
cat > "$SERVE_DIR/latest.json" << EOF
{
"version": "$VERSION",
"notes": "Dev test update v$VERSION — placeholder (UI testing only)",
"pub_date": "$PUB_DATE",
"platforms": {
"$TAURI_PLATFORM": {
"signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHBsYWNlaG9sZGVyIHNpZyBmb3IgZGV2IHRlc3Rpbmcgb25seQ==",
"url": "http://localhost:$PORT/dummy-update-$VERSION.tar.gz"
}
}
}
EOF
echo "No real build found in .update-dist/ — serving placeholder manifest."
echo " version : $VERSION (placeholder)"
echo " manifest: http://localhost:$PORT/latest.json"
echo " install : will fail signature verification (expected for UI testing)"
echo ""
echo " To test the full install flow, run first:"
echo " npm run tauri:build-dev-update"
fi
echo ""
echo "Press Ctrl+C to stop."
echo ""
cd "$SERVE_DIR" && python3 -m http.server "$PORT"