#!/usr/bin/env bash
# WTM Group - Manage session groups
set -euo pipefail
source "${HOME}/.wtm/lib/common.sh"
source "${HOME}/.wtm/lib/session-rel.sh"

case "${1:-help}" in
  list)
    # List all distinct groups
    echo ""
    python3 -c "
import json
with open('${WTM_SESSIONS}') as f:
    data = json.load(f)
groups = {}
for sid, s in data.get('sessions', {}).items():
    g = s.get('session_group')
    if g:
        groups.setdefault(g, []).append(sid)
if not groups:
    print('  No groups defined.')
else:
    print(f\"  {'Group':<25} {'Members':<10}\")
    print(f\"  {'─'*25} {'─'*10}\")
    for g, members in sorted(groups.items()):
        print(f'  {g:<25} {len(members):<10}')
"
    echo ""
    ;;
  show)
    shift
    if [[ $# -lt 1 ]]; then
      echo "Usage: wtm group show <name>"
      exit 1
    fi
    echo ""
    echo "  Group: $1"
    echo "  ─────────────────────────────"
    list_group "$1" | while IFS='|' read -r sid type branch status; do
      echo "  ${sid}  ${type}  ${branch}  ${status}"
    done
    echo ""
    ;;
  create)
    shift
    if [[ $# -lt 2 ]]; then
      echo "Usage: wtm group create <name> <session-id> [session-id...]"
      exit 1
    fi
    group_name="$1"
    shift
    create_group "${group_name}" "$@"
    log_ok "Group '${group_name}' created with $# session(s)"
    ;;
  add)
    shift
    if [[ $# -lt 2 ]]; then
      echo "Usage: wtm group add <name> <session-id>"
      exit 1
    fi
    add_to_group "$2" "$1"
    log_ok "Added $2 to group $1"
    ;;
  remove)
    shift
    if [[ $# -lt 1 ]]; then
      echo "Usage: wtm group remove <session-id>"
      exit 1
    fi
    remove_from_group "$1"
    log_ok "Removed $1 from its group"
    ;;
  kill)
    shift
    if [[ $# -lt 1 ]]; then
      echo "Usage: wtm group kill <name>"
      exit 1
    fi
    log_warn "Killing all sessions in group: $1"
    list_group "$1" | while IFS='|' read -r sid _type _branch _status; do
      bash "${HOME}/.wtm/bin/wtm-kill" "${sid}" 2>/dev/null || true
      log_ok "Killed: ${sid}"
    done
    log_ok "Group '$1' killed"
    ;;
  help|--help|-h)
    cat <<'EOF'
Usage:
  wtm group list                           List all groups
  wtm group show <name>                    Show sessions in group
  wtm group create <name> <sid> [sid...]   Create group
  wtm group add <name> <sid>               Add session to group
  wtm group remove <sid>                   Remove session from group
  wtm group kill <name>                    Kill all sessions in group
EOF
    ;;
  *)
    log_error "Unknown group command: $1"
    exit 1
    ;;
esac
