diff --git a/.github/workflows/request-reviewers.yml b/.github/workflows/request-reviewers.yml new file mode 100644 index 0000000..db0f041 --- /dev/null +++ b/.github/workflows/request-reviewers.yml @@ -0,0 +1,45 @@ +name: Request maintainer reviews + +on: + pull_request_target: + types: + - opened + - ready_for_review + +permissions: + contents: read + pull-requests: write + +jobs: + request-reviewers: + if: ${{ !github.event.pull_request.draft }} + runs-on: ubuntu-latest + steps: + - name: Request reviews from maintainers + uses: actions/github-script@v7 + with: + script: | + const maintainers = ['just1and0', 'mosoakinyemi']; + const author = context.payload.pull_request.user.login; + const alreadyRequested = new Set( + context.payload.pull_request.requested_reviewers.map( + reviewer => reviewer.login, + ), + ); + const reviewers = maintainers.filter( + maintainer => maintainer !== author && !alreadyRequested.has(maintainer), + ); + + if (reviewers.length === 0) { + core.info('All eligible maintainers are already requested.'); + return; + } + + await github.rest.pulls.requestReviewers({ + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: context.issue.number, + reviewers, + }); + + core.info(`Requested reviews from: ${reviewers.join(', ')}`);