diff options
-rw-r--r-- | .github/workflows/labeler.yml | 77 |
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 |