Files
klammertext/doc/edit/vscode/make_vsix.sh
T
ack ee8bcf5300 Windows: product names, the editors, WSL; the Linux page's image step
Assembled from development commit c3c40f6c8fca. Since 830b193: on Windows the
products carry Windows names (ktext.exe, klammertext.dll, document.dll,
reflect.dll) and the console's output code page is UTF-8 for a run; the
editor tooling works on Windows (VS Code, Sublime Text, Vim, with the
interpreter's name chosen by platform) and Notepad++ joins it
(doc/edit/notepadpp: a User Defined Language and two Run-menu commands);
a sixth install page, doc/install/windows_wsl_install.md, for Linux
inside WSL; the Windows page opens with the three routes and gains its
editor section, the PowerShell quoting and Path notes; the Linux page
installs OpenImageIO from the python3-openimageio package and verifies
with kdiag --machine; the README lists all six install pages. Linux and
macOS behaviour is unchanged.
2026-09-25 18:43:22 +02:00

96 lines
3.9 KiB
Bash
Executable File

#!/bin/bash
# make_vsix.sh — package the Klammertext VS Code extension as klammertext.vsix.
#
# Modern VS Code loads only REGISTERED extensions: a folder merely copied
# into ~/.vscode/extensions/ is ignored (and flagged in its .obsolete file),
# so the extension must be installed as a .vsix:
#
# ./make_vsix.sh
# code --install-extension klammertext.vsix
#
# A .vsix is a zip holding a two-file manifest plus the extension payload
# under extension/. This script builds it with bash + Python only — no
# npm, no vsce — matching the extension's no-dependency design. The shared
# core and language server are vendored into the payload: from this folder
# if present (the editing-zip layout), else from ../shared (the repository
# layout).
set -e
cd "$(dirname "$0")"
# The interpreter: $PYTHON if the environment names one (env/runtime.env
# does), else python3, else python -- the only name python.org installs on
# Windows, where this runs in the MSYS2 shell.
PYTHON="${PYTHON:-$(command -v python3 || command -v python)}"
[ -n "$PYTHON" ] || { echo "make_vsix.sh: no python3 or python on PATH" >&2; exit 1; }
OUT="$PWD/klammertext.vsix"
STAGE="$(mktemp -d)"
trap 'rm -rf "$STAGE"' EXIT
mkdir -p "$STAGE/extension/syntaxes"
cp package.json extension.js language-configuration.json README.md "$STAGE/extension/"
cp syntaxes/klammertext.tmLanguage.json "$STAGE/extension/syntaxes/"
for f in klammertext_edit.py klammertext_ls.py; do
if [ -f "$f" ]; then
cp "$f" "$STAGE/extension/"
elif [ -f "../shared/$f" ]; then
cp "../shared/$f" "$STAGE/extension/"
else
echo "make_vsix.sh: cannot find $f (looked here and in ../shared)" >&2
exit 1
fi
done
VERSION=$("$PYTHON" -c "import json; print(json.load(open('package.json'))['version'])")
cat > "$STAGE/[Content_Types].xml" <<'EOF'
<?xml version="1.0" encoding="utf-8"?>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
<Default Extension="json" ContentType="application/json"/>
<Default Extension="js" ContentType="application/javascript"/>
<Default Extension="md" ContentType="text/markdown"/>
<Default Extension="py" ContentType="text/x-python"/>
<Default Extension="vsixmanifest" ContentType="text/xml"/>
</Types>
EOF
cat > "$STAGE/extension.vsixmanifest" <<EOF
<?xml version="1.0" encoding="utf-8"?>
<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011">
<Metadata>
<Identity Language="en-US" Id="klammertext" Version="$VERSION" Publisher="klammertext"/>
<DisplayName>Klammertext</DisplayName>
<Description xml:space="preserve">Klammertext language support: syntax highlighting, delimiter matching, structural reindentation, table alignment, and delimiter diagnostics.</Description>
<Categories>Programming Languages</Categories>
<Properties>
<Property Id="Microsoft.VisualStudio.Code.Engine" Value="^1.75.0"/>
<Property Id="Microsoft.VisualStudio.Code.ExtensionDependencies" Value=""/>
<Property Id="Microsoft.VisualStudio.Code.ExtensionPack" Value=""/>
<Property Id="Microsoft.VisualStudio.Code.LocalizedLanguages" Value=""/>
</Properties>
</Metadata>
<Installation>
<InstallationTarget Id="Microsoft.VisualStudio.Code"/>
</Installation>
<Dependencies/>
<Assets>
<Asset Type="Microsoft.VisualStudio.Code.Manifest" Path="extension/package.json" Addressable="true"/>
<Asset Type="Microsoft.VisualStudio.Services.Content.Details" Path="extension/README.md" Addressable="true"/>
</Assets>
</PackageManifest>
EOF
"$PYTHON" - "$STAGE" "$OUT" <<'EOF'
import os, sys, zipfile
stage, out = sys.argv[1], sys.argv[2]
with zipfile.ZipFile(out, 'w', zipfile.ZIP_DEFLATED) as z:
for root, _dirs, files in os.walk(stage):
for f in sorted(files):
full = os.path.join(root, f)
z.write(full, os.path.relpath(full, stage))
EOF
echo "Created $OUT"
echo "Install with: code --install-extension $OUT"