#!/usr/bin/env bash set -euo pipefail # Use WM_WORKTREE_PATH (set by workmux) so this works regardless of cwd wt_dir="${WM_WORKTREE_PATH:-.}" echo "[cleanup] cwd=$(pwd) WM_WORKTREE_PATH=${WM_WORKTREE_PATH:-} wt_dir=$wt_dir" # Kill backend/frontend processes using this worktree's ports if [ -f "$wt_dir/.env.local" ]; then source "$wt_dir/.env.local" echo "[cleanup] .env.local found: BACKEND_PORT=${BACKEND_PORT:-} FRONTEND_PORT=${FRONTEND_PORT:-}" for port in "${BACKEND_PORT:-}" "${FRONTEND_PORT:-}"; do [ -z "$port" ] && continue pid=$(lsof -ti "TCP:${port}" -sTCP:LISTEN 2>/dev/null || true) if [ -n "$pid" ]; then kill "$pid" 2>/dev/null && echo "[cleanup] Killed process $pid on port $port" \ || echo "[cleanup] Warning: Could not kill process $pid on port $port" else echo "[cleanup] No process listening on port $port" fi done else echo "[cleanup] No .env.local at $wt_dir/.env.local" fi # Remove the matching windmill-ee-private worktree if one exists wt_basename=$(basename "$wt_dir") # Find ee repo using same discovery logic as worktree-env main_repo_root="$(cd "$(git -C "$wt_dir" rev-parse --git-common-dir 2>/dev/null)/.." && pwd)" parent_dir="$(cd "$wt_dir/.." && pwd)" echo "[cleanup] wt_basename=$wt_basename main_repo_root=$main_repo_root parent_dir=$parent_dir" ee_repo="" for candidate in \ "${main_repo_root:+${main_repo_root}/../windmill-ee-private}" \ "${parent_dir}/windmill-ee-private" \ "${HOME}/windmill-ee-private" \ "${HOME}/projects/windmill-ee-private"; do if [ -n "$candidate" ] && [ -d "$candidate" ]; then ee_repo="$(cd "$candidate" && pwd)" break fi done if [ -z "$ee_repo" ]; then echo "[cleanup] Could not find windmill-ee-private repo, skipping EE worktree cleanup" fi ee_worktree_dir="${ee_repo:+${ee_repo}__worktrees/${wt_basename}}" echo "[cleanup] ee_repo=${ee_repo:-} ee_worktree_dir=${ee_worktree_dir:-} exists=$([ -n "$ee_worktree_dir" ] && [ -d "$ee_worktree_dir" ] && echo yes || echo no)" if [ -n "$ee_worktree_dir" ] && [ -d "$ee_worktree_dir" ]; then git -C "$ee_repo" worktree remove "$ee_worktree_dir" --force 2>/dev/null \ && echo "[cleanup] Removed EE worktree at $ee_worktree_dir" \ || echo "[cleanup] Warning: Could not remove EE worktree at $ee_worktree_dir" fi # Clean up Cursor grouped tmux session tmux kill-session -t "cursor-${wt_basename}" 2>/dev/null || true