Feat: remove labels and assignees on issue close

This commit is contained in:
peaklabs-dev
2024-09-13 18:42:38 +02:00
parent 47277a68ec
commit 7948a0309f
2 changed files with 57 additions and 38 deletions

View File

@@ -0,0 +1,57 @@
name: Remove Labels and Assignees on Issue Close
on:
issues:
types: [closed]
pull_request:
types: [closed]
jobs:
remove-labels-and-assignees:
runs-on: ubuntu-latest
steps:
- name: Remove labels and assignees
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const issue = context.payload.issue || context.payload.pull_request;
const { owner, repo } = context.repo;
try {
const { data: currentLabels } = await github.rest.issues.listLabelsOnIssue({
owner,
repo,
issue_number: issue.number
});
const labelsToKeep = currentLabels
.filter(label => label.name === '⏱︎ Stale')
.map(label => label.name);
await github.rest.issues.setLabels({
owner,
repo,
issue_number: issue.number,
labels: labelsToKeep
});
} catch (error) {
if (error.status !== 404) {
throw error;
}
}
if (issue.assignees && issue.assignees.length > 0) {
try {
await github.rest.issues.removeAssignees({
owner,
repo,
issue_number: issue.number,
assignees: issue.assignees.map(assignee => assignee.login)
});
} catch (error) {
if (error.status !== 404) {
throw error;
}
}
}

View File

@@ -1,38 +0,0 @@
name: Remove Labels and Assignees on Issue Close
on:
issues:
types: [closed]
pull_request:
types: [closed]
jobs:
remove-labels-and-assignees:
runs-on: ubuntu-latest
steps:
- name: Remove all labels and assignees
uses: actions/github-script@v6
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
const issue = context.payload.issue || context.payload.pull_request;
const repo = context.repo;
// Remove all labels
await github.rest.issues.removeAllLabels({
owner: repo.owner,
repo: repo.name,
issue_number: issue.number
});
// Remove all assignees
if (issue.assignees && issue.assignees.length > 0) {
await github.rest.issues.removeAssignees({
owner: repo.owner,
repo: repo.name,
issue_number: issue.number,
assignees: issue.assignees.map(assignee => assignee.login)
});
}
console.log(`Removed all labels and assignees from issue/PR #${issue.number}`);