#!/bin/bash
# tmux 세션 삭제 도구

show_help() {
    cat << EOF
╔════════════════════════════════════════╗
║     Tmux 세션 삭제 도구               ║
╚════════════════════════════════════════╝

사용법: $0 <패턴>

  패턴:
    *           - 모든 tmux 세션 삭제
    abcd*       - 'abcd'로 시작하는 세션만 삭제
    *xyz        - 'xyz'로 끝나는 세션만 삭제
    *word*      - 'word'가 포함된 세션만 삭제
    session_1   - 정확한 세션명만 삭제

  예제:
    $0 '*'          # 모든 세션 삭제
    $0 'ai_*'       # ai_로 시작하는 모든 세션 삭제
    $0 'worker*'    # worker로 시작하는 세션 삭제
    $0 'my_session' # 특정 세션만 삭제

EOF

    echo "현재 실행 중인 세션:"
    echo "─────────────────────────────────────────"
    if tmux list-sessions 2>/dev/null; then
        :
    else
        echo "  (실행 중인 세션 없음)"
    fi
    echo ""

    exit 0
}

kill_sessions() {
    local pattern="$1"
    local monitor_session="monitor_dashboard"

    # 패턴에 맞는 세션 찾기
    local sessions=()
    if [[ "$pattern" == "*" ]]; then
        # 모든 세션 (monitor_dashboard 제외)
        while IFS= read -r session; do
            sessions+=("$session")
        done < <(tmux list-sessions -F "#{session_name}" 2>/dev/null | grep -v "^${monitor_session}$")
    else
        # 패턴 매칭 (bash glob을 grep 패턴으로 변환)
        local grep_pattern="${pattern}"
        grep_pattern="${grep_pattern//\*/.*}"  # * -> .*
        grep_pattern="^${grep_pattern}$"       # 전체 매칭

        while IFS= read -r session; do
            sessions+=("$session")
        done < <(tmux list-sessions -F "#{session_name}" 2>/dev/null | grep -v "^${monitor_session}$" | grep -E "$grep_pattern")
    fi

    # 세션이 없으면 에러
    if [[ ${#sessions[@]} -eq 0 ]]; then
        echo "❌ 패턴 '${pattern}'에 맞는 세션이 없습니다."
        echo ""
        echo "현재 실행 중인 세션:"
        tmux list-sessions 2>/dev/null || echo "  (없음)"
        exit 1
    fi

    # 삭제할 세션 목록 표시
    echo "🗑️  삭제할 세션 (${#sessions[@]}개):"
    echo "─────────────────────────────────────────"
    for session in "${sessions[@]}"; do
        echo "  - $session"
    done
    echo ""

    # 확인
    read -p "정말 삭제하시겠습니까? (y/N): " confirm
    if [[ ! "$confirm" =~ ^[Yy]$ ]]; then
        echo "❌ 취소되었습니다."
        exit 0
    fi

    # 세션 삭제
    echo ""
    local success_count=0
    local fail_count=0
    for session in "${sessions[@]}"; do
        if tmux kill-session -t "$session" 2>/dev/null; then
            echo "✅ $session 삭제됨"
            ((success_count++))
        else
            echo "❌ $session 삭제 실패"
            ((fail_count++))
        fi
    done

    echo ""
    echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
    echo "완료: ${success_count}개 삭제, ${fail_count}개 실패"
}

# 메인
if [[ $# -eq 0 ]]; then
    show_help
fi

PATTERN="$1"
kill_sessions "$PATTERN"
