#!/usr/bin/env bash
# This script launches a multi-pane tmux session for multiple remotes
# TODO make remote sessions run in tmux too
# Copyright 2024 Bryan C. Roessler

# Use DEBUG=1 ./tmux-management to enable debugging
DEBUG=${DEBUG:-0}

debug() { (( DEBUG )) && echo "Debug: $*"; }

HOSTS=(
  workstation
  laptop
  #hartmanlab
)

debug "Hosts list: ${HOSTS[*]}"

# Remove localhost from HOSTS list
TARGETS=()
for HOST in "${HOSTS[@]}"; do
    if [[ "$HOST" != "$HOSTNAME" ]]; then
        TARGETS+=("$HOST")
    fi
done
unset HOST

# Create a unique session name from the remaining hosts
SESSION=$(IFS=- ; echo "${TARGETS[*]}")

debug "Targets: ${TARGETS[*]}"
debug "Session: $SESSION"

# Connect to existing session
if tmux has-session -t "$SESSION" &> /dev/null; then
  tmux attach -t "$SESSION";
else # create new tmux session
  tmux new-session -d -s "$SESSION" -n "$SESSION";
  # Create a new pane for each TARGET
  for TARGET in "${TARGETS[@]}"; do
    tmux split-window -h;
    tmux send "ssh $TARGET" enter;
  done
  tmux set-window-option synchronize-panes on;
  tmux select-pane -t "$SESSION:0.0"
  tmux send 'clear' enter;
  tmux attach-session -t "$SESSION"
fi
unset TARGET