ci: add a spam closing workflow

This commit is contained in:
ObserverOfTime 2025-08-16 23:06:57 +03:00
parent 34ef1157a6
commit c12b4a1565
2 changed files with 67 additions and 0 deletions

38
.github/scripts/close_spam.js vendored Normal file
View file

@ -0,0 +1,38 @@
module.exports = async ({ github, context }) => {
const { data } = await github.rest.repos.getCollaboratorPermissionLevel({
...context.repo,
username: context.actor
});
if (!data.permission.includes("triage")) {
await github.log.error("Workflow called with insufficient permissions!");
return;
}
let target = context.payload.issue;
if (target) {
await github.rest.issues.update({
...context.repo,
issue_number: target.number,
state: "closed",
state_reason: "not_planned",
title: "[spam]",
body: "",
type: null,
});
} else {
target = context.payload.pull_request;
await github.rest.pulls.update({
...context.repo,
pull_number: target.number,
state: "closed",
title: "[spam]",
body: "",
});
}
await github.rest.issues.lock({
...context.repo,
issue_number: target.number,
lock_reason: "spam",
});
};

29
.github/workflows/spam.yml vendored Normal file
View file

@ -0,0 +1,29 @@
name: Close as spam
on:
issues:
types: [labeled]
pull_request_target:
types: [labeled]
permissions:
issues: write
pull-requests: write
jobs:
spam:
runs-on: ubuntu-latest
if: github.event.label.name == 'spam'
steps:
- name: Checkout script
uses: actions/checkout@v5
with:
sparse-checkout: .github/scripts/close_spam.js
sparse-checkout-cone-mode: false
- name: Run script
uses: actions/github-script@v7
with:
script: |
const script = require('./.github/scripts/close_spam.js')
await script({github, context})