#!/bin/bash
set -euo pipefail

# ============================================================================
# Linear Ticket Details Fetcher
# ============================================================================
# Get complete ticket details including requirements and DoD
# ============================================================================

usage() {
    cat << EOF
Usage: $(basename "$0") ISSUE_ID

Get complete Linear ticket details.

Arguments:
  ISSUE_ID              Issue identifier (e.g., TEAM-123)

Examples:
  # Get ticket details
  $(basename "$0") TEAM-123

  # Get ticket and parse requirements
  $(basename "$0") TEAM-123 | jq '.description' | grep -A 10 "## Requirements"

  # Get ticket and parse DoD
  $(basename "$0") TEAM-123 | jq '.description' | grep -A 10 "## Definition of Done"

Exit codes:
  0 - Success
  1 - Invalid arguments
  2 - Linear API error
EOF
    exit 1
}

# Parse arguments
ISSUE_ID=""
if [[ $# -eq 0 ]]; then
    usage
fi

while [[ $# -gt 0 ]]; do
    case $1 in
        -h|--help)
            usage
            ;;
        *)
            if [[ -z "$ISSUE_ID" ]]; then
                ISSUE_ID="$1"
            else
                echo "Error: Unknown argument: $1"
                usage
            fi
            shift
            ;;
    esac
done

# Validate required arguments
if [[ -z "$ISSUE_ID" ]]; then
    echo "Error: ISSUE_ID is required"
    usage
fi

echo "Fetching Linear ticket: $ISSUE_ID"

# Output the command that Claude should execute (properly quoted for copy-paste)
echo ""
echo "Execute this via Linear MCP (copy-pasteable):"

# Build properly quoted command string
QUOTED_CMD="mcp__linear-server__get_issue --id $(printf %q "$ISSUE_ID")"

echo "$QUOTED_CMD"
