Files
20260512-skg-tk/scripts/start-dev-background.sh

54 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
API_DIR="$ROOT_DIR/api"
WEB_DIR="$ROOT_DIR/web"
LOG_DIR="$ROOT_DIR/.logs"
PID_DIR="$ROOT_DIR/.pids"
mkdir -p "$LOG_DIR" "$PID_DIR"
port_is_listening() {
local port="$1"
lsof -tiTCP:"$port" -sTCP:LISTEN >/dev/null 2>&1
}
start_api() {
if port_is_listening 4291; then
echo "api already running on 4291"
return
fi
if [[ ! -x "$API_DIR/.venv/bin/uvicorn" ]]; then
echo "missing api/.venv/bin/uvicorn" >&2
exit 1
fi
(
cd "$API_DIR"
nohup .venv/bin/uvicorn main:app --host 127.0.0.1 --port 4291 >> "$LOG_DIR/api.log" 2>&1 &
echo $! > "$PID_DIR/api.pid"
)
echo "api started on 4291, log: $LOG_DIR/api.log"
}
start_web() {
if port_is_listening 4290; then
echo "web already running on 4290"
return
fi
if ! command -v pnpm >/dev/null 2>&1; then
echo "missing pnpm in PATH" >&2
exit 1
fi
(
cd "$WEB_DIR"
nohup pnpm dev >> "$LOG_DIR/web.log" 2>&1 &
echo $! > "$PID_DIR/web.pid"
)
echo "web started on 4290, log: $LOG_DIR/web.log"
}
start_api
start_web
echo "open http://localhost:4290"