diff options
Diffstat (limited to 'src/tools/mkvsix.sh')
| -rwxr-xr-x | src/tools/mkvsix.sh | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/tools/mkvsix.sh b/src/tools/mkvsix.sh new file mode 100755 index 0000000..5ca8ef5 --- /dev/null +++ b/src/tools/mkvsix.sh @@ -0,0 +1,35 @@ +#!/bin/bash +# builds the vs code extension, with the language server inside it: the tinyvm +# javascript vm (src/js/tinyvm.js, compiled from src/js/tinyvm.ts) and the server's image +# (src/js/lsp.json, from build/lsp/genome.h and its map), and the wasm server +# (src/tools/mklspwasm.sh) when clang can build it. needs node and tsc; the +# server build (src/tools/mklsp.sh) runs first if build/lsp is missing. +# src/tools/mkvsix.sh [outfile.vsix] +set -e +cd "$(dirname "$0")/../.." +OUT=${1:-$PWD/build/zc-language-support.vsix} +case "$OUT" in /*) ;; *) OUT="$PWD/$OUT" ;; esac +mkdir -p "$(dirname "$OUT")" +bash src/tools/mklsp.sh build/lsp >/dev/null +# typescript errors stop packaging, so broken generated code is never shipped. +command -v tsc >/dev/null || { echo "mkvsix: tsc is not installed" >&2; exit 1; } +tsc src/js/tinyvm.ts --target es2020 --lib es2020,dom --module commonjs --outDir src/js +node src/js/extract_lsp.js +mkdir -p editors/vscode/server +cp src/js/tinyvm.js src/js/layout.js src/js/lsp.json editors/vscode/server/ +# the wasm server runs when it is there; without clang the vm server is packed alone +if command -v clang >/dev/null && clang --print-targets | grep -q wasm32; then + LSP_BUILD_DIR=build/lsp LSP_REUSE_BUILD=1 bash src/tools/mklspwasm.sh editors/vscode/server/lsp.wasm +else + rm -f editors/vscode/server/lsp.wasm + echo "no clang with wasm32: packing the javascript vm server only" >&2 +fi +cd editors/vscode +if [ -n "${VSCE:-}" ]; then + "$VSCE" package --allow-missing-repository --skip-license -o "$OUT" >/dev/null +elif command -v vsce >/dev/null; then + vsce package --allow-missing-repository --skip-license -o "$OUT" >/dev/null +else + npx -y @vscode/vsce package --allow-missing-repository --skip-license -o "$OUT" >/dev/null +fi +echo "$OUT" |
