@@ -11,13 +11,36 @@ jobs:
11
11
with :
12
12
fetch-depth : 0
13
13
14
- - name : Check for 1. missing end line breaks and 2. control characters in filenames
14
+ # PR ๋ผ๋ฒจ ํ์ธ
15
+ - name : Get PR labels
16
+ id : pr-labels
15
17
run : |
18
+ pr_number="${{ github.event.pull_request.number }}"
19
+ labels_json=$(gh pr view $pr_number --json labels -q '.labels[].name')
20
+ if [ -n "$labels_json" ]; then
21
+ echo "has_maintenance=$(echo $labels_json | grep -q 'maintenance' && echo 'true' || echo 'false')" >> $GITHUB_OUTPUT
22
+ else
23
+ echo "has_maintenance=false" >> $GITHUB_OUTPUT
24
+ fi
25
+ env :
26
+ GH_TOKEN : ${{ github.token }}
27
+
28
+ - name : Check for 1. missing end line breaks and 2. control characters in filenames and 3. filename rules
29
+ run : |
30
+ # ํ์ํ ๊ฐ๋ค ๋ฏธ๋ฆฌ ์ค์
31
+ pr_author="${{ github.event.pull_request.user.login }}"
32
+ pr_number="${{ github.event.pull_request.number }}"
33
+ labels_json=$(gh pr view $pr_number --json labels -q '.labels[].name')
34
+ has_maintenance=false
35
+ if echo "$labels_json" | grep -q "maintenance"; then
36
+ has_maintenance=true
37
+ fi
38
+
16
39
# ๋ฐ์ดํ๋ฅผ ์ ๊ฑฐํ๊ณ ํ์ผ ๋ชฉ๋ก ๊ฐ์ ธ์ค๊ธฐ
17
40
files=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.sha }} | tr -d '"')
18
41
echo "๋ณ๊ฒฝ๋ ํ์ผ ๋ชฉ๋ก:"
19
42
echo "$files"
20
-
43
+
21
44
success=true
22
45
23
46
# ์ค๋ฐ๊ฟ ์ฒดํฌ
@@ -35,13 +58,13 @@ jobs:
35
58
for file in $files; do
36
59
# basename์ผ๋ก ํ์ผ๋ช
๋ง ์ถ์ถํ๊ณ ๋ฐ์ดํ ์ ๊ฑฐ
37
60
filename=$(basename "$file" | tr -d '"')
38
-
61
+
39
62
# ๋ฐฑ์ฌ๋์๋ก ์์ํ๋ ์ ์ด๋ฌธ์๋ค ์ฒดํฌ (\b, \n, \r, \t ๋ฑ)
40
63
if printf '%q' "$filename" | grep -q '\\[bnrtfv]'; then
41
64
echo "- $file (์ ์ด๋ฌธ์ ํฌํจ)" >> $GITHUB_STEP_SUMMARY
42
65
success=false
43
66
fi
44
-
67
+
45
68
# ์ผ๋ฐ์ ์ธ ์ ์ด๋ฌธ์๋ค ์ฒดํฌ (0x00-0x1F, 0x7F)
46
69
if echo -n "$filename" | LC_ALL=C grep -q '[[:cntrl:]]'; then
47
70
echo "- $file (์ ์ด๋ฌธ์ ํฌํจ)" >> $GITHUB_STEP_SUMMARY
@@ -53,17 +76,38 @@ jobs:
53
76
echo "- $file (์ ์ด๋ฌธ์ ํฌํจ)" >> $GITHUB_STEP_SUMMARY
54
77
success=false
55
78
fi
56
-
79
+
57
80
# ์ด์ค์ผ์ดํ ์ํ์ค ์ฒดํฌ
58
81
if [[ "$filename" =~ (\\[0-7]{1,3}|\\x[0-9a-fA-F]{1,2}) ]]; then
59
82
echo "- $file (์ ์ด๋ฌธ์ ํฌํจ)" >> $GITHUB_STEP_SUMMARY
60
83
success=false
61
84
fi
62
85
done
63
86
87
+ # maintenance ๋ผ๋ฒจ์ด ์๋ ๊ฒฝ์ฐ์๋ง ํ์ผ๋ช
๊ท์น ์ฒดํฌ
88
+ if [ "$has_maintenance" != "true" ]; then
89
+ echo -e "\n## ํ์ผ๋ช
๊ท์น ์๋ฐ" >> $GITHUB_STEP_SUMMARY
90
+ for file in $files; do
91
+ if [ -f "$file" ]; then
92
+ # ํ์ผ๋ช
๋ง ์ถ์ถ (๊ฒฝ๋ก ์ ์ธ)
93
+ filename=$(basename "$file")
94
+ # ํ์ผ๋ช
์ด GitHub๊ณ์ ๋ช
์ธ์ง ํ์ธ
95
+ if [[ ! "$filename" =~ ^${pr_author} ]]; then
96
+ echo "- $file (ํ์ผ๋ช
์ '$pr_author'๋ก ํด์ฃผ์
์ผ ํฉ๋๋ค)" >> $GITHUB_STEP_SUMMARY
97
+ success=false
98
+ fi
99
+ fi
100
+ done
101
+ fi
102
+
64
103
if [ "$success" = false ]; then
65
104
echo -e "\n:warning: ์ ๋ฌธ์ ๋ค์ ํด๊ฒฐํด ์ฃผ์ธ์:" >> $GITHUB_STEP_SUMMARY
66
105
echo "1. ํ์ผ ๋์ ๋๋ฝ๋ ์ค๋ฐ๊ฟ์ ์ถ๊ฐํด ์ฃผ์ธ์." >> $GITHUB_STEP_SUMMARY
67
106
echo "2. ํ์ผ๋ช
์์ ์ ์ด๋ฌธ์๋ฅผ ์ ๊ฑฐํด ์ฃผ์ธ์." >> $GITHUB_STEP_SUMMARY
107
+ if [[ ! "$pr_labels" =~ "maintenance" ]]; then
108
+ echo "3. ํ์ผ๋ช
์ ๋ฐ๋์ 'GitHub๊ณ์ ๋ช
'์ผ๋ก ํด์ฃผ์
์ผ ํฉ๋๋ค. (์: ${pr_author}.ts)" >> $GITHUB_STEP_SUMMARY
109
+ fi
68
110
exit 1
69
111
fi
112
+ env :
113
+ GH_TOKEN : ${{ github.token }}
0 commit comments