#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" RUN_DIR="$ROOT_DIR/.run" BACKEND_PID_FILE="$RUN_DIR/backend.pid" FRONTEND_PID_FILE="$RUN_DIR/frontend.pid" stop_process() { local name="$1" local pid_file="$2" if [[ ! -f "$pid_file" ]]; then echo "$name not running" return fi local pid pid="$(cat "$pid_file")" if [[ -n "$pid" ]] && kill -0 "$pid" 2>/dev/null; then kill "$pid" 2>/dev/null || true for _ in {1..20}; do if ! kill -0 "$pid" 2>/dev/null; then break fi sleep 0.25 done if kill -0 "$pid" 2>/dev/null; then kill -9 "$pid" 2>/dev/null || true fi echo "Stopped $name (PID $pid)" else echo "$name pid file was stale" fi rm -f "$pid_file" } stop_process "frontend" "$FRONTEND_PID_FILE" stop_process "backend" "$BACKEND_PID_FILE"