Files
pulse/scripts/dev-hot.sh
T
2025-09-28 18:46:52 +00:00

45 lines
1.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
FRONTEND_DEV_HOST=${FRONTEND_DEV_HOST:-127.0.0.1}
FRONTEND_DEV_PORT=${FRONTEND_DEV_PORT:-5173}
FRONTEND_DEV_SERVER=${FRONTEND_DEV_SERVER:-http://${FRONTEND_DEV_HOST}:${FRONTEND_DEV_PORT}}
BACKEND_CMD=${BACKEND_CMD:-go run ./cmd/pulse}
VITE_ARGS=${VITE_ARGS:-}
cleanup() {
local exit_code=${1:-$?}
trap - EXIT INT TERM
if [[ -n ${VITE_PID:-} ]] && kill -0 "$VITE_PID" >/dev/null 2>&1; then
kill "$VITE_PID" >/dev/null 2>&1 || true
fi
if [[ -n ${BACKEND_PID:-} ]] && kill -0 "$BACKEND_PID" >/dev/null 2>&1; then
kill "$BACKEND_PID" >/dev/null 2>&1 || true
fi
wait >/dev/null 2>&1 || true
exit "$exit_code"
}
trap cleanup EXIT INT TERM
export FRONTEND_DEV_SERVER
printf "[dev-hot] Starting Vite dev server at %s\n" "$FRONTEND_DEV_SERVER"
(
cd frontend-modern
npm run dev -- --host "$FRONTEND_DEV_HOST" --port "$FRONTEND_DEV_PORT" $VITE_ARGS
) &
VITE_PID=$!
# Give Vite a moment to boot up before starting the backend proxy.
sleep 2
printf "[dev-hot] Starting Pulse backend with FRONTEND_DEV_SERVER=%s\n" "$FRONTEND_DEV_SERVER"
${BACKEND_CMD} &
BACKEND_PID=$!
# Wait for either process to exit and propagate the status code.
wait -n "$VITE_PID" "$BACKEND_PID"
EXIT_STATUS=$?
cleanup "$EXIT_STATUS"