Files
rose-ash/scripts/sx-loops-down.sh
giles 6a00df2609 smalltalk: plan + briefing + sx-loops 8th slot
Showcase: blocks with non-local return on captured method-return
continuation. ANSI-ish Smalltalk-80 subset, SUnit + Pharo Kernel-Tests
slice, 7 phases. Worktree: /root/rose-ash-loops/smalltalk on
branch loops/smalltalk.
2026-04-25 00:05:31 +00:00

44 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# Stop the sx-loops tmux session. Optionally (--clean) also remove the
# per-language git worktrees. Loops stop immediately; in-progress iterations
# commit whatever they have; nothing is pushed that wasn't already.
set -euo pipefail
SESSION="sx-loops"
WORKTREE_BASE="/root/rose-ash-loops"
CLEAN=0
for arg in "$@"; do
case "$arg" in
--clean) CLEAN=1 ;;
*) echo "Unknown arg: $arg"; exit 2 ;;
esac
done
if tmux has-session -t "$SESSION" 2>/dev/null; then
WINDOWS=$(tmux list-windows -t "$SESSION" -F '#W')
for w in $WINDOWS; do
tmux send-keys -t "$SESSION:$w" "/exit" C-m 2>/dev/null || true
done
echo "Sent /exit to all windows. Waiting 5s for clean shutdown..."
sleep 5
tmux kill-session -t "$SESSION"
echo "Killed tmux session '$SESSION'."
else
echo "No sx-loops tmux session running."
fi
if [ "$CLEAN" = "1" ]; then
cd "$(dirname "$0")/.."
for lang in lua prolog forth erlang haskell js hs smalltalk; do
wt="$WORKTREE_BASE/$lang"
if [ -d "$wt" ]; then
git worktree remove --force "$wt" 2>/dev/null || rm -rf "$wt"
echo "Removed worktree: $wt"
fi
done
git worktree prune
echo "Worktree branches (loops/<lang>) are preserved. Delete manually if desired:"
echo " git branch -D loops/lua loops/prolog loops/forth loops/erlang loops/haskell loops/js loops/hs loops/smalltalk"
fi