-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
77 lines (66 loc) · 2.7 KB
/
pr-labels.yaml
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
65
66
67
68
69
70
71
72
73
74
75
76
77
name: Manage labels based on PR body
on:
pull_request:
types: [opened, edited, reopened, synchronize]
jobs:
manage-labels:
runs-on: ubuntu-latest
steps:
- name: Analyze PR Body and manage labels
run: |
body="${{ github.event.pull_request.body }}"
# Initialize the labels to be added and removed
labels_to_add=()
labels_to_remove=()
# Check for enhancement
if echo "$body" | grep -q '\- \[x\] New feature'; then
labels_to_add+=("enhancement")
else
labels_to_remove+=("enhancement")
fi
# Check for bug-related labels (Bug fix, Hotfix, Security patch)
if echo "$body" | grep -q '\- \[x\] Bug fix\|\- \[x\] Hotfix\|\- \[x\] Security patch'; then
labels_to_add+=("bug")
else
labels_to_remove+=("bug")
fi
# Check for documentation update
if echo "$body" | grep -q '\- \[x\] Documentation update'; then
labels_to_add+=("documentation")
else
labels_to_remove+=("documentation")
fi
# Check for refactoring
if echo "$body" | grep -q '\- \[x\] Refactoring'; then
labels_to_add+=("refactor")
else
labels_to_remove+=("refactor")
fi
# Check for UI/UX improvement
if echo "$body" | grep -q '\- \[x\] UI/UX improvement'; then
labels_to_add+=("UI/UX")
else
labels_to_remove+=("UI/UX")
fi
# Export the labels to add and remove as environment variables (formatted as space-separated lists)
echo "LABELS_TO_ADD=${labels_to_add[*]}" >> $GITHUB_ENV
echo "LABELS_TO_REMOVE=${labels_to_remove[*]}" >> $GITHUB_ENV
- name: Add labels if necessary
if: env.LABELS_TO_ADD != ''
run: |
for label in ${{ env.LABELS_TO_ADD }}; do
curl -s -X POST \
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
-H "Accept: application/vnd.github.v3+json" \
-d "{\"labels\": [\"$label\"]}" \
https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.pull_request.number }}/labels
done
- name: Remove labels if necessary
if: env.LABELS_TO_REMOVE != ''
run: |
for label in ${{ env.LABELS_TO_REMOVE }}; do
curl -s -X DELETE \
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.pull_request.number }}/labels/$label
done