From 5d8d9df7d1b95c1a6a7bf25ddf57652c86f110b3 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Tue, 19 May 2026 12:24:40 -0500 Subject: feat(tmux-util): add script skeleton and reap subcommand A new utility in dotfiles/common/.local/bin/ for managing tmux sessions. The eventual plan covers six subcommands (go, pick, ls, find, reap, rename). This commit ships the skeleton, the dispatch + help, and the first subcommand: reap. reap walks every unattached tmux session whose name doesn't match $TMUX_UTIL_REAP_SKIP (default `^aiv-`), sends SIGHUP to each pane's PID (the same signal that fires when you close a terminal window), waits up to three seconds for the session to wind down, and falls back to `tmux kill-session` if anything's still alive. Tests live under tests/tmux-util/ with the same fake-binary-on-PATH pattern layout-navigate uses. fake-tmux reads canned session state from a file and records every invocation. fake-kill records signal calls without sending them. fake-sleep is a no-op so tests don't actually wait. 14 tests cover Normal / Boundary cases for dispatch + reap. Run them with: cd tests && python3 -m unittest tmux-util.test_tmux_util The other five subcommands stub out for now and exit non-zero with "not implemented yet" so future TDD turns can drop them in one at a time. --- tests/tmux-util/fake-sleep | 4 ++++ 1 file changed, 4 insertions(+) create mode 100755 tests/tmux-util/fake-sleep (limited to 'tests/tmux-util/fake-sleep') diff --git a/tests/tmux-util/fake-sleep b/tests/tmux-util/fake-sleep new file mode 100755 index 0000000..2b8a549 --- /dev/null +++ b/tests/tmux-util/fake-sleep @@ -0,0 +1,4 @@ +#!/bin/sh +# Fake sleep — no-op so tests don't actually wait. Tests assert on behavior, +# not timing. +exit 0 -- cgit v1.2.3