Spaces:
Sleeping
Sleeping
| name: Flag issues with bad titles | |
| on: | |
| issues: | |
| types: [opened] | |
| permissions: | |
| issues: write | |
| jobs: | |
| check-title: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Flag or redirect issue | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const title = context.payload.issue.title.trim(); | |
| const titleLower = title.toLowerCase(); | |
| const badTitles = [ | |
| "[bug]", "bug report", "bug", "issue", | |
| "help", "question", "test", "...", "untitled" | |
| ]; | |
| const featureRequestTitles = [ | |
| "feature request", "[feature]", "[feature request]", "[enhancement]" | |
| ]; | |
| if (badTitles.includes(titleLower)) { | |
| // Ensure the label exists | |
| try { | |
| await github.rest.issues.getLabel({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| name: 'invalid-title', | |
| }); | |
| } catch { | |
| await github.rest.issues.createLabel({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| name: 'invalid-title', | |
| color: 'e4e669', | |
| description: 'Issue title does not meet quality standards', | |
| }); | |
| } | |
| await github.rest.issues.addLabels({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: context.payload.issue.number, | |
| labels: ['invalid-title'], | |
| }); | |
| await github.rest.issues.createComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: context.payload.issue.number, | |
| body: [ | |
| '## Invalid title', | |
| '', | |
| `Your issue title \`${title}\` is too generic to be actionable.`, | |
| '', | |
| 'Please edit the title to something descriptive that summarizes the problem — for example:', | |
| '> _Map view crashes when zooming in on Safari 17_', | |
| '', | |
| '**This issue will be automatically closed in 24 hours if the title has not been updated.**', | |
| ].join('\n'), | |
| }); | |
| } else if (featureRequestTitles.some(t => titleLower.startsWith(t))) { | |
| await github.rest.issues.createComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: context.payload.issue.number, | |
| body: [ | |
| '## Wrong place for feature requests', | |
| '', | |
| 'Feature requests should be submitted in [Discussions](https://github.com/mauriceboe/TREK/discussions/new?category=feature-requests), not as issues.', | |
| '', | |
| 'This issue has been closed. Feel free to re-submit your idea in the right place!', | |
| ].join('\n'), | |
| }); | |
| await github.rest.issues.update({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: context.payload.issue.number, | |
| state: 'closed', | |
| state_reason: 'not_planned', | |
| }); | |
| } | |