aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/assign-relevant-labels.yml
blob: 4118c71720938c72f6d2eb403e0988f9fe30ca9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
name: "Assign relevant labels"
on:
    pull_request_target:
        types: [ opened, edited ]
jobs:
    assign-label:
        if: github.event.pull_request.state == 'open'
        runs-on: ubuntu-latest
        permissions:
            issues: write
            pull-requests: write
            contents: read
        steps:
            -   name: label
                env:
                    TITLE: ${{ github.event.pull_request.title }}
                    LABEL_FIX: Bug Fix
                    LABEL_BACKEND: Backend
                uses: actions/github-script@v7
                with:
                    github-token: ${{ secrets.GITHUB_TOKEN}}
                    script: |
                        const labelsToAdd = [];
                        const labelsToRemove = [];
                        const title = process.env.TITLE.split(":")[0].toUpperCase();
                        
                        if(title.includes("FIX")){
                          labelsToAdd.push(process.env.LABEL_FIX);
                        } else {
                          labelsToRemove.push(process.env.LABEL_FIX);
                        }
                        
                        if(title.includes("BACKEND")){
                          labelsToAdd.push(process.env.LABEL_BACKEND);
                        } else {
                          labelsToRemove.push(process.env.LABEL_BACKEND);
                        }
                        
                        for (const label of labelsToAdd) {
                          github.rest.issues.addLabels({
                            issue_number: context.issue.number,
                            owner: context.repo.owner,
                            repo: context.repo.repo,
                            labels: [label]
                          });
                        }
                        
                        const {data} = await github.rest.issues.listLabelsOnIssue({
                          issue_number: context.issue.number,
                          owner: context.repo.owner,
                          repo: context.repo.repo,
                        });
                        
                        for (const label of labelsToRemove) {
                          const filtered = data.filter(l => l.name == label);
                          if(filtered.length == 1){
                            github.rest.issues.removeLabel({
                              issue_number: context.issue.number,
                              owner: context.repo.owner,
                              repo: context.repo.repo,
                              name: label
                            });
                          }
                        }