mirror of
https://github.com/storytold/soundcraft.git
synced 2026-10-25 02:56:47 -06:00
Bash scripts under packaging/ now use [[ ]] for tests, copy positional parameters into named locals inside functions, and end env.sh helpers with an explicit return (bare, so each keeps its exit status). shellcheck clean.
40 lines
1.6 KiB
Bash
Executable File
40 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Build the browser version and zip it: $DIST/soundcraft-web-<version>.zip
|
|
#
|
|
# Usage: packaging/web/package.sh [--skip-build]
|
|
#
|
|
# Needs: trunk (brew install trunk / cargo install trunk --locked) and the wasm32-unknown-unknown
|
|
# target. The zip holds a self-contained static site in soundcraft-web-<version>/ that works
|
|
# from any URL path and inside an <iframe>. Hosting notes: packaging/web/README.md.
|
|
set -euo pipefail
|
|
# shellcheck source=../env.sh
|
|
. "$(dirname "${BASH_SOURCE[0]}")/../env.sh"
|
|
HERE="$ROOT/packaging/web"
|
|
|
|
if [[ "${1:-}" != "--skip-build" ]]; then
|
|
command -v trunk >/dev/null || { echo "error: trunk not found (cargo install trunk --locked)" >&2; exit 1; }
|
|
(cd "$ROOT/apps/soundcraft-web" && trunk build --release)
|
|
fi
|
|
|
|
SITE="$ROOT/dist/web"
|
|
[[ -f "$SITE/index.html" ]] || { echo "error: $SITE/index.html missing; run without --skip-build" >&2; exit 1; }
|
|
# Paths must be relative so the site works under any prefix (public_url = "./" in Trunk.toml).
|
|
if grep -Eq '(src|href)="/[^/]' "$SITE/index.html"; then
|
|
echo "error: $SITE/index.html has root-absolute URLs; it would break when served from a sub-path" >&2
|
|
exit 1
|
|
fi
|
|
|
|
NAME="soundcraft-web-$VERSION"
|
|
WORK="$CARGO_TARGET_DIR/web-package"
|
|
rm -rf "$WORK"
|
|
mkdir -p "$WORK/$NAME"
|
|
cp -R "$SITE/." "$WORK/$NAME/"
|
|
# Sample server configs (MIME type, caching, compression); harmless where unused.
|
|
cp "$HERE/_headers" "$HERE/.htaccess" "$WORK/$NAME/"
|
|
cp "$HERE/README.md" "$WORK/$NAME/HOSTING.md"
|
|
copy_docs "$WORK/$NAME"
|
|
rm -f "$DIST/$NAME.zip"
|
|
(cd "$WORK" && zip -qr9 "$DIST/$NAME.zip" "$NAME")
|
|
echo "wrote $DIST/$NAME.zip"
|
|
ls -lh "$DIST/$NAME.zip"
|