38 lines
1.4 KiB
Bash
Executable File
38 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Compile the plexus UIs to distributable files — this repo's `vite build`.
|
|
#
|
|
# Usage:
|
|
# ./ctrl/dist.sh # every plexus -> gen/plexuses/<name>/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[@]}"
|