pboProperty Ontology
bash33 lines1.5 KB
RawDownload
1#!/usr/bin/env bash
2# Build a single-file Mermaid + ELK layout bundle (IIFE setting window.mermaid with the ELK layout loaders
3# registered) for scripts/build_atlas_html.py and scripts/render_check.py.
4# Usage: build_mermaid_bundle.sh [elk-output.js] [dagre-output.js]
5# The optional second bundle omits the ELK plugin and is suitable for fallback
6# renderer comparison in render_check.py.
7set -euo pipefail
8OUT="$(realpath -m "${1:-mermaid-elk.bundle.js}")"
9DAGRE_OUT=""
10if [[ -n "${2:-}" ]]; then
11 DAGRE_OUT="$(realpath -m "$2")"
12fi
13WORK="$(mktemp -d)"
14cd "$WORK"
15npm init -y >/dev/null
16npm install --silent mermaid @mermaid-js/layout-elk esbuild
17cat > entry.js <<'EOF'
18import mermaid from 'mermaid';
19import elkLayouts from '@mermaid-js/layout-elk';
20mermaid.registerLayoutLoaders(elkLayouts);
21window.mermaid = mermaid;
22EOF
23node node_modules/esbuild/install.js >/dev/null 2>&1 || true # some npm configs block postinstall; fetch the binary explicitly
24./node_modules/.bin/esbuild entry.js --bundle --format=iife --minify --outfile="$OUT"
25echo "mermaid $(node -p "require('mermaid/package.json').version") + layout-elk $(node -p "require('@mermaid-js/layout-elk/package.json').version") -> $OUT"
26if [[ -n "$DAGRE_OUT" ]]; then
27cat > entry-dagre.js <<'EOF'
28import mermaid from 'mermaid';
29window.mermaid = mermaid;
30EOF
31./node_modules/.bin/esbuild entry-dagre.js --bundle --format=iife --minify --outfile="$DAGRE_OUT"
32echo "mermaid $(node -p "require('mermaid/package.json').version") dagre fallback -> $DAGRE_OUT"
33fi