#!/usr/bin/env bash

set -euo pipefail

ROOT_DIR="$(cd "$(dirname "$0")" && pwd)"
SESSION_NAME="jscad-hw"
WINDOW_NAME="jscad-hw"

if ! command -v tmux >/dev/null 2>&1; then
  echo "tmux is required but was not found in PATH." >&2
  exit 1
fi

if ! command -v jscad1-server >/dev/null 2>&1; then
  echo "jscad1-server is required but was not found in PATH." >&2
  echo "Install it with: npm install -g jscad1-server" >&2
  exit 1
fi

if tmux has-session -t "$SESSION_NAME" 2>/dev/null; then
  tmux kill-session -t "$SESSION_NAME"
fi

tmux new-session -d -s "$SESSION_NAME" -n "$WINDOW_NAME" -c "$ROOT_DIR" "npm start"
tmux split-window -h -t "$SESSION_NAME:$WINDOW_NAME" -c "$ROOT_DIR" "npm test"
tmux select-layout -t "$SESSION_NAME:$WINDOW_NAME" even-horizontal

tmux setw -t "$SESSION_NAME:$WINDOW_NAME" pane-border-status top
tmux select-pane -t "$SESSION_NAME:$WINDOW_NAME".0 -T "npm start"
tmux select-pane -t "$SESSION_NAME:$WINDOW_NAME".1 -T "npm test"
tmux select-pane -t "$SESSION_NAME:$WINDOW_NAME".0

if [[ -n "${TMUX:-}" ]]; then
  tmux switch-client -t "$SESSION_NAME"
else
  exec tmux attach-session -t "$SESSION_NAME"
fi
