#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PID_FILE="$ROOT_DIR/.doclink-web.pid" PORT="${1:-${PORT:-}}" stop_by_pid() { local pid="$1" if [[ -z "${pid:-}" ]]; then return 1 fi if kill -0 "$pid" 2>/dev/null; then kill "$pid" echo "Stopped DocLink Web process $pid" return 0 fi echo "Process $pid is not running anymore." return 0 } if [[ -n "${PORT:-}" ]]; then if command -v lsof >/dev/null 2>&1; then PIDS="$(lsof -ti tcp:"$PORT" 2>/dev/null || true)" if [[ -n "${PIDS:-}" ]]; then for PID in $PIDS; do stop_by_pid "$PID" done rm -f "$PID_FILE" exit 0 fi fi echo "No process found listening on port $PORT." fi if [[ ! -f "$PID_FILE" ]]; then echo "No pid file found. If the server is running in another terminal, stop it with Ctrl+C." exit 0 fi PID="$(cat "$PID_FILE" 2>/dev/null || true)" if [[ -z "${PID:-}" ]]; then rm -f "$PID_FILE" echo "Pid file was empty. Removed it." exit 0 fi if kill -0 "$PID" 2>/dev/null; then kill "$PID" echo "Stopped DocLink Web process $PID" else echo "Process $PID is not running anymore." fi rm -f "$PID_FILE"