Merge Battle Below The Canal Scrimmage Code #2
This file contains hidden or 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: Reopen mistake PR once | |
| on: | |
| issue_comment: | |
| types: [created] | |
| permissions: | |
| issues: write | |
| pull-requests: write | |
| jobs: | |
| reopen: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Handle /not-a-mistake | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const comment = context.payload.comment; | |
| const issue = context.payload.issue; | |
| if (!issue.pull_request) return; | |
| if (comment.body.trim() !== '/not-a-mistake') return; | |
| const pr = await github.rest.pulls.get({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| pull_number: issue.number | |
| }); | |
| const labels = pr.data.labels.map(l => l.name); | |
| // Only PR author may use this | |
| if (comment.user.login !== pr.data.user.login) { | |
| return; | |
| } | |
| // Must be closed and labeled mistake-pr | |
| if (pr.data.state !== 'closed') return; | |
| if (!labels.includes('mistake-pr')) return; | |
| // Auto-reopen already disabled | |
| if (labels.includes('reopen-used') || labels.includes('reopen-locked')) { | |
| await github.rest.issues.createComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: issue.number, | |
| body: | |
| "Automatic reopening is disabled for this PR.\n\n" + | |
| "A maintainer may still reopen it manually if needed." | |
| }); | |
| return; | |
| } | |
| // Mark reopen as used FIRST (prevents race) | |
| await github.rest.issues.addLabels({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: issue.number, | |
| labels: ['reopen-used'] | |
| }); | |
| await github.rest.issues.removeLabel({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: issue.number, | |
| name: 'mistake-pr' | |
| }); | |
| await github.rest.pulls.update({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| pull_number: issue.number, | |
| state: 'open' | |
| }); | |
| await github.rest.issues.createComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: issue.number, | |
| body: | |
| "PR reopened.\n\n" + | |
| "If this PR is closed again, automatic reopening will be disabled." | |
| }); |