blob: c0a7cbf43c832f5f7f1eec7f4a0341ea076e09df (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
#!/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
# Force the dev ports: a shell-exported BACKEND_PORT (e.g. 24991 from ~/.bashrc,
# set so the Dispatch CLI hits prod) would otherwise override .env and bind the
# dev server onto the production port (colliding with the prod systemd service).
# Bun lets shell env win over .env, so pin the dev ports here.
setsid bash -c "cd '$BACKEND' && exec env BACKEND_PORT=24203 SURFACE_WS_PORT=24205 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
|