@@ -11,13 +11,36 @@ jobs:
1111 with :
1212 fetch-depth : 0
1313
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
1517 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+
1639 # ๋ฐ์ดํ๋ฅผ ์ ๊ฑฐํ๊ณ ํ์ผ ๋ชฉ๋ก ๊ฐ์ ธ์ค๊ธฐ
1740 files=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.sha }} | tr -d '"')
1841 echo "๋ณ๊ฒฝ๋ ํ์ผ ๋ชฉ๋ก:"
1942 echo "$files"
20-
43+
2144 success=true
2245
2346 # ์ค๋ฐ๊ฟ ์ฒดํฌ
@@ -35,13 +58,13 @@ jobs:
3558 for file in $files; do
3659 # basename์ผ๋ก ํ์ผ๋ช
๋ง ์ถ์ถํ๊ณ ๋ฐ์ดํ ์ ๊ฑฐ
3760 filename=$(basename "$file" | tr -d '"')
38-
61+
3962 # ๋ฐฑ์ฌ๋์๋ก ์์ํ๋ ์ ์ด๋ฌธ์๋ค ์ฒดํฌ (\b, \n, \r, \t ๋ฑ)
4063 if printf '%q' "$filename" | grep -q '\\[bnrtfv]'; then
4164 echo "- $file (์ ์ด๋ฌธ์ ํฌํจ)" >> $GITHUB_STEP_SUMMARY
4265 success=false
4366 fi
44-
67+
4568 # ์ผ๋ฐ์ ์ธ ์ ์ด๋ฌธ์๋ค ์ฒดํฌ (0x00-0x1F, 0x7F)
4669 if echo -n "$filename" | LC_ALL=C grep -q '[[:cntrl:]]'; then
4770 echo "- $file (์ ์ด๋ฌธ์ ํฌํจ)" >> $GITHUB_STEP_SUMMARY
@@ -53,17 +76,38 @@ jobs:
5376 echo "- $file (์ ์ด๋ฌธ์ ํฌํจ)" >> $GITHUB_STEP_SUMMARY
5477 success=false
5578 fi
56-
79+
5780 # ์ด์ค์ผ์ดํ ์ํ์ค ์ฒดํฌ
5881 if [[ "$filename" =~ (\\[0-7]{1,3}|\\x[0-9a-fA-F]{1,2}) ]]; then
5982 echo "- $file (์ ์ด๋ฌธ์ ํฌํจ)" >> $GITHUB_STEP_SUMMARY
6083 success=false
6184 fi
6285 done
6386
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+
64103 if [ "$success" = false ]; then
65104 echo -e "\n:warning: ์ ๋ฌธ์ ๋ค์ ํด๊ฒฐํด ์ฃผ์ธ์:" >> $GITHUB_STEP_SUMMARY
66105 echo "1. ํ์ผ ๋์ ๋๋ฝ๋ ์ค๋ฐ๊ฟ์ ์ถ๊ฐํด ์ฃผ์ธ์." >> $GITHUB_STEP_SUMMARY
67106 echo "2. ํ์ผ๋ช
์์ ์ ์ด๋ฌธ์๋ฅผ ์ ๊ฑฐํด ์ฃผ์ธ์." >> $GITHUB_STEP_SUMMARY
107+ if [[ ! "$pr_labels" =~ "maintenance" ]]; then
108+ echo "3. ํ์ผ๋ช
์ ๋ฐ๋์ 'GitHub๊ณ์ ๋ช
'์ผ๋ก ํด์ฃผ์
์ผ ํฉ๋๋ค. (์: ${pr_author}.ts)" >> $GITHUB_STEP_SUMMARY
109+ fi
68110 exit 1
69111 fi
112+ env :
113+ GH_TOKEN : ${{ github.token }}
0 commit comments