You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.6 KiB
45 lines
1.6 KiB
name: Mark Duplicate Dependabot PRs |
|
|
|
on: |
|
pull_request: |
|
types: [closed] |
|
|
|
jobs: |
|
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: |
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
|
run: | |
|
PRS=$(gh pr list --search 'milestone:${{ github.event.pull_request.milestone.title }} is:merged in:title "${{ steps.extract.outputs.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
|
|
|