#!/usr/bin/env bash # Compile the plexus UIs to distributable files — this repo's `vite build`. # # Usage: # ./ctrl/dist.sh # every plexus -> gen/plexuses//index.html # ./ctrl/dist.sh bundle # one, by name # ./ctrl/dist.sh path/to/ui.toml # every [[plexus]] a run file lists # ./ctrl/dist.sh bundle --dest /tmp/out --delivery vendored --notice none # # A plexus is a UI that gets EXPORTED, not served. The output is a single # index.html carrying its theme, its data and its diagrams inline, so it opens # from a double-click on a machine with no server, no node and no network — the # state a regulated Windows box is usually in. # # It needs nothing built first: a plexus is its own directory under # soleprint/artery/plexuses/ (or wherever a run file points), and the theme it # carries is cut to what the page reads. See soleprint/common/slice/plexus.py. set -e CALLER_DIR="$PWD" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ROOT_DIR="$(dirname "$SCRIPT_DIR")" PYTHON="${PYTHON:-python3}" args=() for a in "$@"; do # A bare word that names an existing path is a path the caller typed. if [[ "$a" != -* && -e "$CALLER_DIR/$a" ]]; then args+=("$(cd "$CALLER_DIR" && realpath -m -- "$a")") else args+=("$a") fi done cd "$ROOT_DIR/soleprint" exec "$PYTHON" -m common.slice plexus "${args[@]}"