#!/usr/bin/env bash
#
# Comments on a GitHub issue with a list of potential duplicates.
# Usage: ./comment-on-duplicates.sh --potential-duplicates 456 789 101
#
# The base issue number is read from the workflow event payload.
#

set -euo pipefail

REPO="anthropics/claude-code"

# Read from event payload so the issue number is bound to the triggering event.
# Falls back to workflow_dispatch inputs for manual runs.
BASE_ISSUE=$(jq -r '.issue.number // .inputs.issue_number // empty' "${GITHUB_EVENT_PATH:?GITHUB_EVENT_PATH not set}")
if ! [[ "$BASE_ISSUE" =~ ^[0-9]+$ ]]; then
  echo "Error: no issue number in event payload" >&2
  exit 1
fi

DUPLICATES=()

# Parse arguments
while [[ $# -gt 0 ]]; do
  case $1 in
    --potential-duplicates)
      shift
      while [[ $# -gt 0 && ! "$1" =~ ^-- ]]; do
        DUPLICATES+=("$1")
        shift
      done
      ;;
    *)
      echo "Error: unknown argument (only --potential-duplicates is accepted)" >&2
      exit 1
      ;;
  esac
done

# Validate duplicates
if [[ ${#DUPLICATES[@]} -eq 0 ]]; then
  echo "Error: --potential-duplicates requires at least one issue number" >&2
  exit 1
fi

if [[ ${#DUPLICATES[@]} -gt 3 ]]; then
  echo "Error: --potential-duplicates accepts at most 3 issues" >&2
  exit 1
fi

for dup in "${DUPLICATES[@]}"; do
  if ! [[ "$dup" =~ ^[0-9]+$ ]]; then
    echo "Error: duplicate issue must be a number, got: $dup" >&2
    exit 1
  fi
done

# Validate that base issue exists
if ! gh issue view "$BASE_ISSUE" --repo "$REPO" &>/dev/null; then
  echo "Error: issue #$BASE_ISSUE does not exist in $REPO" >&2
  exit 1
fi

# Validate that all duplicate issues exist
for dup in "${DUPLICATES[@]}"; do
  if ! gh issue view "$dup" --repo "$REPO" &>/dev/null; then
    echo "Error: issue #$dup does not exist in $REPO" >&2
    exit 1
  fi
done

# Build comment body
COUNT=${#DUPLICATES[@]}
if [[ $COUNT -eq 1 ]]; then
  HEADER="Found 1 possible duplicate issue:"
else
  HEADER="Found $COUNT possible duplicate issues:"
fi

BODY="$HEADER"$'\n\n'
INDEX=1
for dup in "${DUPLICATES[@]}"; do
  BODY+="$INDEX. https://github.com/$REPO/issues/$dup"$'\n'
  ((INDEX++))
done

BODY+=$'\n'"This issue will be automatically closed as a duplicate in 3 days."$'\n\n'
BODY+="- If your issue is a duplicate, please close it and 👍 the existing issue instead"$'\n'
BODY+="- To prevent auto-closure, add a comment or 👎 this comment"$'\n\n'
BODY+="🤖 Generated with [Claude Code](https://claude.ai/code)"

# Post the comment
gh issue comment "$BASE_ISSUE" --repo "$REPO" --body "$BODY"

echo "Posted duplicate comment on issue #$BASE_ISSUE"
