From b353d2a55a44e15ddde414194ddd8c95218ae4c6 Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Sat, 26 Apr 2025 14:36:05 +1000 Subject: [PATCH] Allow closing issues via github actions This provides some basic admin permissions without needing to go all the way up to a collaborator. --- .github/workflows/close-issues.yml | 39 ++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 .github/workflows/close-issues.yml diff --git a/.github/workflows/close-issues.yml b/.github/workflows/close-issues.yml new file mode 100644 index 000000000..5a171348a --- /dev/null +++ b/.github/workflows/close-issues.yml @@ -0,0 +1,39 @@ +name: Close Issues + +on: + issue_comment: + types: [created] + +permissions: + issues: write + +jobs: + close_issue: + runs-on: ubuntu-latest + if: ${{ github.event.issue.pull_request == null && startsWith(github.event.comment.body, '/close') }} + steps: + - uses: actions/github-script@v7 + with: + script: | + const trustedUsers = ['ChrisMcD1', 'jesseduffield', 'stefanhaller'] + const commenter = context.payload.comment.user.login + + console.log(`Commenter: ${commenter}`) + + if (!trustedUsers.includes(commenter)) { + console.log(`User ${commenter} is not trusted. Ignoring.`) + return + } + + const issueNumber = context.payload.issue.number + const owner = context.repo.owner + const repo = context.repo.repo + + await github.rest.issues.update({ + owner, + repo, + issue_number: issueNumber, + state: 'closed' + }) + + console.log(`Closed issue #${issueNumber} by request from ${commenter}.`)