summaryrefslogtreecommitdiffhomepage
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to 'bin')
-rwxr-xr-xbin/up54
1 files changed, 54 insertions, 0 deletions
diff --git a/bin/up b/bin/up
new file mode 100755
index 0000000..8d529bc
--- /dev/null
+++ b/bin/up
@@ -0,0 +1,54 @@
+#!/usr/bin/env bash
+# bin/up — run the Dispatch backend + web frontend together, both live-reloading.
+# Ctrl-C stops BOTH cleanly (including the backend's spawned observability collector).
+#
+# backend (this repo) bun --watch → HTTP :24203 + surface WS :24205 (FULL restart on change)
+# frontend (../dispatch-web) vite → http://localhost:24204 (HMR, in-place)
+#
+# Assumes dispatch-web is a sibling of this repo. Run: bin/up (or: bun run dev:all)
+
+set -uo pipefail
+
+HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # .../arch-rewrite/bin
+BACKEND="$(cd "$HERE/.." && pwd)" # backend repo root
+FRONTEND="$(cd "$HERE/../.." && pwd)/dispatch-web" # sibling repo
+
+if [ ! -d "$FRONTEND" ]; then
+ echo "up: frontend repo not found at $FRONTEND" >&2
+ echo "up: check out 'dispatch-web' beside this repo and retry." >&2
+ exit 1
+fi
+
+cleanup() {
+ echo
+ echo "[up] stopping backend + frontend..."
+ # Each child runs in its OWN process group (setsid) → signal the whole subtree.
+ [ -n "${BACK_PG:-}" ] && kill -TERM "-$BACK_PG" 2>/dev/null
+ [ -n "${FRONT_PG:-}" ] && kill -TERM "-$FRONT_PG" 2>/dev/null
+ sleep 1
+ # Safety net for the backend's collector child + any straggler (bracket trick:
+ # the literal pattern '[h]ost-bin' can't match the pkill command line itself).
+ pkill -9 -f '[h]ost-bin/src/main' 2>/dev/null
+ pkill -9 -f '[o]bservability-collector/src/main' 2>/dev/null
+ [ -n "${BACK_PG:-}" ] && kill -KILL "-$BACK_PG" 2>/dev/null
+ [ -n "${FRONT_PG:-}" ] && kill -KILL "-$FRONT_PG" 2>/dev/null
+ echo "[up] stopped."
+ return 0
+}
+trap cleanup EXIT
+trap 'exit 130' INT TERM
+
+echo "[up] backend → http://localhost:24203 (surface WS :24205) [bun --watch — restarts on change]"
+echo "[up] frontend → http://localhost:24204 [vite HMR]"
+echo "[up] Ctrl-C to stop both."
+echo
+
+setsid bash -c "cd '$BACKEND' && exec bun --watch packages/host-bin/src/main.ts" \
+ > >(sed -u 's/^/[backend] /') 2>&1 &
+BACK_PG=$!
+
+setsid bash -c "cd '$FRONTEND' && exec bun run dev" \
+ > >(sed -u 's/^/[frontend] /') 2>&1 &
+FRONT_PG=$!
+
+wait