Make the live benchmark report Swift-measured parse timing, use deterministic browser CI, and deploy only after local and live Pages validation pass.
69 lines
1.8 KiB
Bash
Executable File
69 lines
1.8 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"
|
|
VENDOR_DIR="$SITE_DIR/vendor/browser_wasi_shim"
|
|
|
|
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"
|
|
|
|
if command -v npm >/dev/null 2>&1; then
|
|
TMP_NPM_DIR="$(mktemp -d)"
|
|
trap 'rm -rf "$TMP_NPM_DIR"' EXIT
|
|
(
|
|
cd "$TMP_NPM_DIR"
|
|
npm init -y >/dev/null
|
|
npm install @bjorn3/browser_wasi_shim@0.3.0 >/dev/null
|
|
)
|
|
rm -rf "$VENDOR_DIR"
|
|
mkdir -p "$VENDOR_DIR"
|
|
cp "$TMP_NPM_DIR/node_modules/@bjorn3/browser_wasi_shim/dist/"*.js "$VENDOR_DIR/"
|
|
else
|
|
echo "wasm: npm is required to vendor browser_wasi_shim" >&2
|
|
exit 2
|
|
fi
|
|
|
|
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"
|