thread-master/scripts/dev-with-style-8d.sh

73 lines
1.6 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
BACKEND_DIR="$ROOT_DIR/haixun-backend"
CONFIG_FILE="${HAIXUN_BACKEND_CONFIG:-etc/gateway.yaml}"
BACKEND_URL="${HAIXUN_BACKEND_URL:-http://127.0.0.1:8890}"
pids=()
owned_pids=()
cleanup() {
local code=$?
if ((${#owned_pids[@]} > 0)); then
echo ""
echo "[dev-8d] stopping backend and worker..."
kill "${owned_pids[@]}" 2>/dev/null || true
wait "${owned_pids[@]}" 2>/dev/null || true
fi
exit "$code"
}
trap cleanup EXIT INT TERM
if curl -fsS "$BACKEND_URL/api/v1/health" >/dev/null 2>&1; then
echo "[dev-8d] backend already running: $BACKEND_URL"
else
echo "[dev-8d] starting Go backend: $CONFIG_FILE"
(
cd "$BACKEND_DIR"
go run ./gateway.go -f "$CONFIG_FILE"
) &
pids+=("$!")
owned_pids+=("$!")
echo "[dev-8d] waiting for backend health..."
for _ in $(seq 1 30); do
if curl -fsS "$BACKEND_URL/api/v1/health" >/dev/null 2>&1; then
break
fi
if ! kill -0 "${pids[0]}" 2>/dev/null; then
wait "${pids[0]}"
fi
sleep 1
done
if ! curl -fsS "$BACKEND_URL/api/v1/health" >/dev/null 2>&1; then
echo "[dev-8d] backend health check timed out: $BACKEND_URL" >&2
exit 1
fi
fi
echo "[dev-8d] starting Node 8D worker"
(
cd "$ROOT_DIR"
npm run worker:style-8d
) &
pids+=("$!")
owned_pids+=("$!")
echo "[dev-8d] running pids=${pids[*]}"
echo "[dev-8d] press Ctrl+C to stop both"
while true; do
for pid in "${owned_pids[@]}"; do
if ! kill -0 "$pid" 2>/dev/null; then
wait "$pid"
exit $?
fi
done
sleep 1
done