#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
STACK_DIR="$(cd -- "${SCRIPT_DIR}/.." &>/dev/null && pwd)"
RUN_DIR="${STACK_DIR}/generated"
PID_FILE="${RUN_DIR}/k8s-port-forwards.pids"
META_FILE="${RUN_DIR}/k8s-port-forwards.meta"
is_pid_running() {
local pid="$1"
[[ -n "${pid}" ]] && kill -0 "${pid}" >/dev/null 2>&1
}
if [[ -f "${PID_FILE}" ]]; then
while IFS= read -r pid; do
[[ -z "${pid}" ]] && continue
if is_pid_running "${pid}"; then
echo "[port-forward-stop] stopping pid=${pid}"
kill "${pid}" || true
fi
done <"${PID_FILE}"
fi
if command -v pgrep >/dev/null 2>&1; then
while IFS= read -r pid; do
[[ -z "${pid}" || "${pid}" == "$$" ]] && continue
args="$(ps -p "${pid}" -o args= 2>/dev/null || true)"
[[ "${args}" == *"tcp-forward.py"* ]] || continue
[[ "${args}" == *"${SCRIPT_DIR}/tcp-forward.py"* || "${args}" == *" tcp-forward.py"* ]] || continue
echo "[port-forward-stop] stopping orphan pid=${pid}"
kill "${pid}" || true
done < <(pgrep -f "tcp-forward.py" || true)
fi
rm -f "${PID_FILE}" "${META_FILE}"
echo "[port-forward-stop] done."