37 lines
1.0 KiB
Bash
37 lines
1.0 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PLUGIN_DIR="${1:-${ROOT_DIR}/plugin-sample-go}"
|
|
WASM_DIR="${PLUGIN_DIR}/wasm"
|
|
PLUGIN_NAME="sample"
|
|
WASM_OUT="${PLUGIN_DIR}/${PLUGIN_NAME}.wasm"
|
|
ZIP_OUT="${PLUGIN_DIR}/${PLUGIN_NAME}.zip"
|
|
|
|
if [[ ! -d "${WASM_DIR}" ]]; then
|
|
echo "[error] wasm folder not found: ${WASM_DIR}" >&2
|
|
exit 1
|
|
fi
|
|
|
|
pushd "${WASM_DIR}" >/dev/null
|
|
|
|
echo "[build] go build -o ${WASM_OUT} (GOOS=wasip1 GOARCH=wasm)"
|
|
if ! GOOS=wasip1 GOARCH=wasm go build -o "${WASM_OUT}" .; then
|
|
echo "[warn] go build failed, trying tinygo"
|
|
echo "[build] tinygo build -o ${WASM_OUT} -target wasi -scheduler=none -gc=leaking ."
|
|
tinygo build -o "${WASM_OUT}" -target wasi -scheduler=none -gc=leaking .
|
|
fi
|
|
|
|
popd >/dev/null
|
|
|
|
rm -f "${ZIP_OUT}"
|
|
|
|
if command -v zip >/dev/null 2>&1; then
|
|
(cd "${PLUGIN_DIR}" && zip -q "${ZIP_OUT}" "${PLUGIN_NAME}.wasm" "${PLUGIN_NAME}.html" "${PLUGIN_NAME}.css" "${PLUGIN_NAME}.js")
|
|
else
|
|
echo "[error] zip not found. Please install zip." >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "[ok] ${ZIP_OUT}"
|