ui work phase 1
This commit is contained in:
41
ctrl/ui.sh
Executable file
41
ctrl/ui.sh
Executable file
@@ -0,0 +1,41 @@
|
||||
#!/usr/bin/env bash
|
||||
# Slices: the part of spr's UI one consumer uses, generated as readable source.
|
||||
#
|
||||
# Usage:
|
||||
# ./ctrl/ui.sh list # what can be sliced, and what each piece pulls in
|
||||
# ./ctrl/ui.sh scan APP_DIR... # what an app uses; its framework copy against spr
|
||||
# ./ctrl/ui.sh slice FILE [--only N] [--list] [--force]
|
||||
# ./ctrl/ui.sh check FILE [--only N] # writes nothing; exit 1 if anything is stale
|
||||
# ./ctrl/ui.sh selftest
|
||||
#
|
||||
# FILE is a run file (see soleprint/common/slice/ui.example.toml). It lives beside
|
||||
# the consumer it describes, never in spr, and is named relative to where you
|
||||
# stand — resolved here before the cd below would change what it means.
|
||||
#
|
||||
# `delivery = "dependency"` is for own projects: spr's names stay and a .spr stamp
|
||||
# says where the copy came from. `delivery = "vendored"` renames through a mapping
|
||||
# profile, drops the headers, writes no stamp, scrubs every spr word, and will
|
||||
# not run without an explicit `notice`.
|
||||
#
|
||||
# This is not ./ctrl/theme.sh: that bakes parts into single pages inside spr.
|
||||
# This writes a slice into a consumer, and checks it for drift both ways.
|
||||
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 "${args[@]}"
|
||||
Reference in New Issue
Block a user