aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/labeler.yml77
1 files changed, 0 insertions, 77 deletions
diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml
deleted file mode 100644
index f1ec8445..00000000
--- a/.github/workflows/labeler.yml
+++ /dev/null
@@ -1,77 +0,0 @@
-name: Automatic Labeling
-
-on:
- pull_request_target:
- types: [opened, synchronize, reopened, ready_for_review, converted_to_draft, closed]
- pull_request_review:
- types: [submitted, dismissed]
-
-jobs:
- labeler:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout code
- uses: actions/checkout@v4
-
- - name: Set Labels
- uses: actions/github-script@v7
- with:
- github-token: ${{ secrets.GH_LABELER }}
- script: |
- const { owner, repo, number: pull_number } = context.issue;
- const { data: pullRequest } = await github.rest.pulls.get({ owner, repo, pull_number });
- const labels = pullRequest.labels.map(label => label.name);
-
- let label = '';
-
- if (pullRequest.draft) {
- label = 'wip';
- } else if (pullRequest.mergeable_state === 'dirty') {
- label = 'merge conflicts';
- } else if (pullRequest.merged) {
- label = ''
- } else {
- const { data: reviews } = await github.rest.pulls.listReviews({ owner, repo, pull_number });
- const { data: commits } = await github.rest.pulls.listCommits({ owner, repo, pull_number });
-
- const filteredReviews = reviews.filter(review => review.state === 'CHANGES_REQUESTED' || review.state === 'APPROVED');
- const lastReview = filteredReviews.sort((a, b) => new Date(b.submitted_at) - new Date(a.submitted_at))[0];
- const lastCommit = commits.sort((a, b) => new Date(b.commit.committer.date) - new Date(a.commit.committer.date))[0];
-
- if (!lastReview || new Date(lastReview.submitted_at) < new Date(lastCommit.commit.committer.date)) {
- label = 'reviews needed';
- } else if (lastReview.state === 'CHANGES_REQUESTED') {
- label = 'changes requested';
- } else if (lastReview.state === 'APPROVED') {
- label = 'merge me please';
- }
- }
-
- // if label is not set change the label
- if (!labels.includes(label)) {
- // list of labels to be removed
- const labelsToRemove = ['merge me please', 'reviews needed', 'merge conflicts', 'wip', 'changes requested'];
-
- // remove all label from list
- const { data: currentLabels } = await github.rest.issues.listLabelsOnIssue({ owner, repo, issue_number: pull_number });
- for (const { name } of currentLabels) {
- if (labelsToRemove.includes(name)) {
- await github.rest.issues.removeLabel({
- owner,
- repo,
- issue_number: pull_number,
- name
- });
- }
- }
-
- // add label
- if (label) {
- await github.rest.issues.addLabels({
- owner,
- repo,
- issue_number: pull_number,
- labels: [label]
- });
- }
- } \ No newline at end of file