| #!/usr/bin/env bash |
| |
| |
| |
| |
| |
| |
|
|
| set -euo pipefail |
|
|
| REPO="anthropics/claude-code" |
|
|
| |
| |
| 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=() |
|
|
| |
| 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 |
|
|
| |
| 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 |
|
|
| |
| 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 |
|
|
| |
| 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 |
|
|
| |
| 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)" |
|
|
| |
| gh issue comment "$BASE_ISSUE" --repo "$REPO" --body "$BODY" |
|
|
| echo "Posted duplicate comment on issue #$BASE_ISSUE" |
|
|