-
Notifications
You must be signed in to change notification settings - Fork 304
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: add check-pr-maintainer-access
- Loading branch information
Showing
1 changed file
with
67 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
name: check-pr-maintainer-access | ||
|
||
on: | ||
pull_request_target: | ||
types: | ||
- opened | ||
|
||
permissions: | ||
pull-requests: write | ||
|
||
jobs: | ||
notify-when-maintainers-cannot-edit: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/github-script@v3 | ||
with: | ||
script: | | ||
const query = ` | ||
query($number: Int!) { | ||
repository(owner: "filamentphp", name: "filamentphp.com") { | ||
pullRequest(number: $number) { | ||
headRepositoryOwner { | ||
login | ||
} | ||
maintainerCanModify | ||
} | ||
} | ||
} | ||
` | ||
const pullNumber = context.issue.number | ||
const variables = { number: pullNumber } | ||
try { | ||
console.log(`Check #${pullNumber} for maintainer edit access...`) | ||
const result = await github.graphql(query, variables) | ||
console.log(JSON.stringify(result, null, 2)) | ||
const pullRequest = result.repository.pullRequest | ||
if (pullRequest.headRepositoryOwner.login === 'filamentphp') { | ||
console.log('PR owned by filamentphp') | ||
return | ||
} | ||
if (! pullRequest.maintainerCanModify) { | ||
console.log('PR not owned by filamentphp and does not have maintainer edits enabled') | ||
await github.issues.createComment({ | ||
issue_number: pullNumber, | ||
owner: 'filamentphp', | ||
repo: 'filamentphp.com', | ||
body: 'Thanks for submitting a PR!\n\nIn order to review and merge PRs most efficiently, we require that all PRs grant maintainer edit access before we review them. If your fork belongs to a GitHub organization, please move the repository to your personal account and try again. If you\'re already using a personal fork, you can learn how to enable maintainer access [in the GitHub documentation](https://docs.github.com/en/github/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork).' | ||
}) | ||
await github.issues.update({ | ||
issue_number: pullNumber, | ||
owner: 'filamentphp', | ||
repo: context.repo.repo, | ||
state: 'closed' | ||
}) | ||
} | ||
} catch(error) { | ||
console.log(error) | ||
} |