PureYAMLStreaming/scripts/build-wasm-site.sh
Mihaela Mihaljevic be03732baa feat: publish WASM streaming smoke site
Add a browser WASM smoke site, four platform CI workflows, README status badges, and real file streaming coverage over the Geekbench corpus.
2026-06-06 22:06:38 +02:00

52 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
SDK_ID="${PUREYAML_STREAMING_WASM_SDK:-swift-6.3.2-RELEASE_wasm}"
SWIFT_SELECTOR="${PUREYAML_STREAMING_WASM_SWIFT_SELECTOR:-+6.3.2}"
PRODUCT="pureyaml-streaming-wasm-smoke"
SITE_DIR="$ROOT_DIR/WasmSite"
swift_command() {
if command -v swiftly >/dev/null 2>&1; then
swiftly run swift "$@" "$SWIFT_SELECTOR"
else
swift "$@"
fi
}
if ! swift_command sdk list | grep -qx "$SDK_ID"; then
echo "wasm: missing Swift SDK '$SDK_ID'" >&2
echo "wasm: install the SDK or set PUREYAML_STREAMING_WASM_SDK" >&2
exit 2
fi
swift_command build \
--package-path "$ROOT_DIR" \
--swift-sdk "$SDK_ID" \
-c release \
--product "$PRODUCT"
BIN_PATH="$(swift_command build \
--package-path "$ROOT_DIR" \
--swift-sdk "$SDK_ID" \
-c release \
--show-bin-path)"
WASM_PATH="$BIN_PATH/$PRODUCT.wasm"
STAGED_WASM="$SITE_DIR/$PRODUCT.wasm"
if command -v wasm-opt >/dev/null 2>&1; then
wasm-opt -Oz --strip-debug --strip-producers "$WASM_PATH" -o "$STAGED_WASM"
else
cp "$WASM_PATH" "$STAGED_WASM"
fi
gzip -9 -c "$STAGED_WASM" > "$STAGED_WASM.gz"
echo "WASM test site ready:"
echo " $SITE_DIR/index.html"
echo " $STAGED_WASM.gz"
echo
echo "Serve it with:"
echo " bash scripts/serve-wasm-site.sh"