#!/bin/bash
# Close TalkEdit processes (Tauri dev and Python backend)

KILLED_ANY=0
BACKEND_PORT="${BACKEND_PORT:-8000}"

kill_port() {
    local port=$1
    local name=$2
    local pids
    pids=$(lsof -ti tcp:"$port" 2>/dev/null)
    if [[ -n "$pids" ]]; then
        echo "Stopping $name backend (port $port, PID $pids)..."
        kill "$pids" 2>/dev/null
        KILLED_ANY=1
    fi
}

kill_pattern() {
    local pattern=$1
    local label=$2
    local pids
    pids=$(pgrep -f "$pattern" 2>/dev/null)
    if [[ -n "$pids" ]]; then
        echo "Stopping $label..."
        kill $pids 2>/dev/null
        KILLED_ANY=1
    fi
}

# --- TalkEdit (Tauri) ---
kill_port "$BACKEND_PORT" "TalkEdit"
kill_pattern "tauri.*TalkEdit\|TalkEdit.*tauri\|cargo.*tauri dev\|/TalkEdit/target/debug" "TalkEdit (Tauri dev)"
# Vite dev server for TalkEdit (port 5173)
kill_pattern "vite.*5173\|rsbuild.*5173" "TalkEdit frontend dev server"

# --- Orphaned uvicorn workers for TalkEdit ---
kill_pattern "uvicorn.*main:app.*--port ${BACKEND_PORT}" "leftover uvicorn workers (TalkEdit)"

if [[ $KILLED_ANY -eq 0 ]]; then
    echo "Nothing to close — no TalkEdit processes found."
else
    echo "Done."
fi
