diff --git a/.github/workflows/close-non-maintainer-issues.yml b/.github/workflows/close-non-maintainer-issues.yml new file mode 100644 index 0000000..db0b134 --- /dev/null +++ b/.github/workflows/close-non-maintainer-issues.yml @@ -0,0 +1,61 @@ +name: Auto-close issues from non-maintainers + +on: + issues: + types: [opened] + +permissions: + issues: write + +jobs: + close-non-maintainer-issues: + runs-on: ubuntu-latest + steps: + - name: Check if user has maintainer rights + id: check_permission + uses: actions/github-script@v7 + with: + script: | + try { + const permission = await github.rest.repos.getCollaboratorPermissionLevel({ + owner: context.repo.owner, + repo: context.repo.repo, + username: context.payload.issue.user.login + }); + + const hasWriteAccess = ['admin', 'write', 'maintain'].includes(permission.data.permission); + core.setOutput('has_write_access', hasWriteAccess); + + return hasWriteAccess; + } catch (error) { + // If we can't check permissions (e.g., user is not a collaborator), assume no access + core.setOutput('has_write_access', false); + return false; + } + + - name: Close issue if user lacks maintainer rights + if: steps.check_permission.outputs.has_write_access == 'false' + uses: actions/github-script@v7 + with: + script: | + const message = `This repository is for announcements by the PowerShell team only. + + To file a bug or start a discussion, please find the appropriate repo in [PowerShell](https://github.com/PowerShell) and create a new issue. + + For general issue discussions, please go to [PowerShell/PowerShell](https://github.com/PowerShell/PowerShell/issues) and create a new issue. + + This issue has been automatically closed.`; + + await github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.payload.issue.number, + body: message + }); + + await github.rest.issues.update({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.payload.issue.number, + state: 'closed' + });