[pull] main from freeCodeCamp:main #1118
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
name: GitHub - Autoclose Invalid PRs | |
on: | |
pull_request_target: | |
branches: | |
- 'main' | |
paths: | |
- '.gitignore' | |
jobs: | |
autoclose: | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6 | |
with: | |
github-token: ${{secrets.GITHUB_TOKEN}} | |
script: | | |
const files = await github.rest.pulls.listFiles({ | |
owner: context.payload.repository.owner.login, | |
repo: context.payload.repository.name, | |
pull_number: context.payload.pull_request.number, | |
}); | |
if ( | |
files.data.length !== 1 || | |
files.data[0].filename !== ".gitignore" | |
) { | |
return; | |
} | |
const creator = context.payload.sender.login; | |
const opts = github.rest.issues.listForRepo.endpoint.merge({ | |
...context.issue, | |
creator, | |
state: 'all' | |
}); | |
const issues = await github.paginate(opts); | |
// iterate through issues | |
for (const issue of issues) { | |
// if the issue is this one, keep looking | |
if (issue.number === context.issue.number) { | |
continue; | |
} | |
// if the issue is actually a PR, they're not a first timer | |
if (issue.pull_request) { | |
return // Creator is already a contributor. | |
} | |
} | |
core.setFailed("Invalid PR detected."); | |
github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: "Thank you for opening this pull request.\n\nThis is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you.\n\nThank you and happy coding.", | |
}); | |
await github.rest.pulls.update({ | |
owner: context.payload.repository.owner.login, | |
repo: context.payload.repository.name, | |
pull_number: context.payload.pull_request.number, | |
state: "closed" | |
}); | |
await github.rest.issues.addLabels({ | |
owner: context.payload.repository.owner.login, | |
repo: context.payload.repository.name, | |
issue_number: context.issue.number, | |
labels: ["spam"] | |
}); |