mirror of
https://github.com/Permissionless-Software-Foundation/psf-memo-client.git
synced 2026-09-21 16:52:02 -07:00
49 lines
1.2 KiB
Bash
49 lines
1.2 KiB
Bash
#!/usr/bin/env bash
|
|||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
if [[ $# -lt 2 ]]; then
|
||
|
|
echo "Usage: swarm-cleanup.sh <tmux-socket> <window-ids-file> [session ...]" >&2
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
TMUX_SOCKET="$1"
|
||
|
|
WINDOW_IDS_FILE="$2"
|
||
|
|
TERMINAL_BACKEND="${SWARMFORGE_TERMINAL_BACKEND:-terminal-app}"
|
||
|
|
WORKING_DIR="$(cd "$(dirname "$WINDOW_IDS_FILE")/.." && pwd)"
|
||
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||
|
|
shift
|
||
|
|
shift
|
||
|
|
|
||
|
|
has_command() {
|
||
|
|
command -v "$1" &>/dev/null
|
||
|
|
}
|
||
|
|
|
||
|
|
source "$SCRIPT_DIR/swarm-terminal-adapter.sh"
|
||
|
|
load_terminal_backend "$TERMINAL_BACKEND"
|
||
|
|
|
||
|
|
if has_command bb; then
|
||
|
|
bb "$SCRIPT_DIR/stop_handoff_daemon.bb" "$WORKING_DIR" 2>/dev/null || true
|
||
|
|
else
|
||
|
|
DAEMON_PID_FILE="$WORKING_DIR/.swarmforge/daemon/handoffd.pid"
|
||
|
|
if [[ -f "$DAEMON_PID_FILE" ]]; then
|
||
|
|
daemon_pid="$(< "$DAEMON_PID_FILE")"
|
||
|
|
if [[ "$daemon_pid" =~ ^[0-9]+$ ]]; then
|
||
|
|
kill -TERM "$daemon_pid" 2>/dev/null || true
|
||
|
|
fi
|
||
|
|
rm -f "$DAEMON_PID_FILE"
|
||
|
|
fi
|
||
|
|
fi
|
||
|
|
|
||
|
|
for session in "$@"; do
|
||
|
|
tmux -S "$TMUX_SOCKET" kill-session -t "$session" 2>/dev/null || true
|
||
|
|
done
|
||
|
|
|
||
|
|
sleep 1
|
||
|
|
|
||
|
|
if [[ -f "$WINDOW_IDS_FILE" ]]; then
|
||
|
|
while IFS= read -r window_id; do
|
||
|
|
[[ -n "$window_id" ]] || continue
|
||
|
|
terminal_close_window "$window_id"
|
||
|
|
done < "$WINDOW_IDS_FILE"
|
||
|
|
fi
|