name: Mark Duplicate PRs on: pull_request: types: [closed] jobs: debug: runs-on: ubuntu-latest steps: - name: Debug Event Payload run: | echo "Merged: ${{ github.event.pull_request.merged }}" echo "User Login: ${{ github.event.pull_request.user.login }}" check_duplicate_prs: runs-on: ubuntu-latest if: github.event.pull_request.merged == 'true' && github.event.pull_request.user.login == 'dependabot[bot]' steps: - name: Checkout Repository uses: actions/checkout@v4 - name: Extract Dependency Name from PR Title id: extract run: | PR_TITLE="${{ github.event.pull_request.title }}" DEPENDENCY_NAME=$(echo "$PR_TITLE" | awk -F ' from ' '{print $1}') echo "dependency_name=$DEPENDENCY_NAME" >> $GITHUB_OUTPUT - name: Find PRs id: find_duplicates env: DEPENDENCY_NAME: ${{ steps.extract.outputs.dependency_name }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | PRS=$(gh pr list --search "milestone:${{ github.event.pull_request.milestone.title }} is:merged $DEPENDENCY_NAME" --json number --jq 'map(.number) | join(",")') echo "prs=$PRS" >> $GITHUB_OUTPUT - name: Label Duplicate PRs if: steps.find_duplicates.outputs.prs != '' env: PRS: ${{ steps.find_duplicates.outputs.prs }} CURRENT_PR_NUMBER: ${{ github.event.pull_request.number }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} shell: bash run: | for i in ${PRS//,/ } do if [ ! $i -eq "$CURRENT_PR_NUMBER" ]; then echo "Marking PR $i as duplicate" gh pr edit "$i" --add-label "status: duplicate" gh pr comment "$i" --body "Duplicate of #$CURRENT_PR_NUMBER" fi done