@@ -25,25 +25,16 @@ jobs:
25
25
env :
26
26
GH_TOKEN : ${{ github.token }}
27
27
28
- - name : Check for 1. missing end line breaks and 2. control characters in filenames and 3. filename rules
28
+ # ์ค๋ฐ๊ฟ ์ฒดํฌ
29
+ - name : Check for missing end line breaks
29
30
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
-
39
31
# ๋ฐ์ดํ๋ฅผ ์ ๊ฑฐํ๊ณ ํ์ผ ๋ชฉ๋ก ๊ฐ์ ธ์ค๊ธฐ
40
32
files=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.sha }} | tr -d '"')
33
+ success=true
34
+
41
35
echo "๋ณ๊ฒฝ๋ ํ์ผ ๋ชฉ๋ก:"
42
36
echo "$files"
43
37
44
- success=true
45
-
46
- # ์ค๋ฐ๊ฟ ์ฒดํฌ
47
38
echo "## ์ค๋ฐ๊ฟ ๋๋ฝ ํ์ผ" >> $GITHUB_STEP_SUMMARY
48
39
for file in $files; do
49
40
if [ -s "$file" ] && [ "$(tail -c 1 $file | wc -l)" -eq 0 ]; then
@@ -53,63 +44,69 @@ jobs:
53
44
fi
54
45
done
55
46
56
- # ์ ์ด๋ฌธ์ ์ฒดํฌ
57
- echo -e "\n## ์ ์ด๋ฌธ์๊ฐ ํฌํจ๋ ํ์ผ๋ช
" >> $GITHUB_STEP_SUMMARY
47
+ if [ "$success" = false ]; then
48
+ echo -e "\n:warning: ํ์ผ ๋์ ๋๋ฝ๋ ์ค๋ฐ๊ฟ์ ์ถ๊ฐํด ์ฃผ์ธ์." >> $GITHUB_STEP_SUMMARY
49
+ exit 1
50
+ fi
51
+
52
+ # ์ ์ด๋ฌธ์ ์ฒดํฌ
53
+ - name : Check for control characters in filenames
54
+ run : |
55
+ files=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.sha }} | tr -d '"')
56
+ success=true
57
+
58
+ echo "## ์ ์ด๋ฌธ์๊ฐ ํฌํจ๋ ํ์ผ๋ช
" >> $GITHUB_STEP_SUMMARY
58
59
for file in $files; do
59
60
# basename์ผ๋ก ํ์ผ๋ช
๋ง ์ถ์ถํ๊ณ ๋ฐ์ดํ ์ ๊ฑฐ
60
61
filename=$(basename "$file" | tr -d '"')
61
62
62
63
# ๋ฐฑ์ฌ๋์๋ก ์์ํ๋ ์ ์ด๋ฌธ์๋ค ์ฒดํฌ (\b, \n, \r, \t ๋ฑ)
63
- if printf '%q' "$filename" | grep -q '\\[bnrtfv]'; then
64
- echo "- $file (์ ์ด๋ฌธ์ ํฌํจ)" >> $GITHUB_STEP_SUMMARY
65
- success=false
66
- fi
64
+ if printf '%q' "$filename" | grep -q '\\[bnrtfv]' || \
67
65
68
- # ์ผ๋ฐ์ ์ธ ์ ์ด๋ฌธ์๋ค ์ฒดํฌ (0x00-0x1F, 0x7F)
69
- if echo -n "$filename" | LC_ALL=C grep -q '[[:cntrl:]]'; then
70
- echo "- $file (์ ์ด๋ฌธ์ ํฌํจ)" >> $GITHUB_STEP_SUMMARY
71
- success=false
72
- fi
66
+ # ์ผ๋ฐ์ ์ธ ์ ์ด๋ฌธ์๋ค ์ฒดํฌ (0x00-0x1F, 0x7F)
67
+ echo -n "$filename" | LC_ALL=C grep -q '[[:cntrl:]]' || \
73
68
74
- # ํน์ ์ ์ด๋ฌธ์๋ค ์ฒดํฌ
75
- if echo -n "$filename" | grep -q $'[\x00-\x1F\x7F]'; then
76
- echo "- $file (์ ์ด๋ฌธ์ ํฌํจ)" >> $GITHUB_STEP_SUMMARY
77
- success=false
78
- fi
69
+ # ํน์ ์ ์ด๋ฌธ์๋ค ์ฒดํฌ
70
+ echo -n "$filename" | grep -q $'[\x00-\x1F\x7F]' || \
79
71
80
- # ์ด์ค์ผ์ดํ ์ํ์ค ์ฒดํฌ
81
- if [[ "$filename" =~ (\\[0-7]{1,3}|\\x[0-9a-fA-F]{1,2}) ]]; then
72
+ # ์ด์ค์ผ์ดํ ์ํ์ค ์ฒดํฌ
73
+ [[ "$filename" =~ (\\[0-7]{1,3}|\\x[0-9a-fA-F]{1,2}) ]]; then
82
74
echo "- $file (์ ์ด๋ฌธ์ ํฌํจ)" >> $GITHUB_STEP_SUMMARY
83
75
success=false
84
76
fi
85
77
done
86
78
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
- # ํ์ผ๋ช
๋ง ์ถ์ถ (๊ฒฝ๋ก ์ ์ธ)
94
- filename=$(basename "$file")
95
-
96
- # ํ์ผ๋ช
์ด GitHub๊ณ์ ๋ช
์ธ์ง ํ์ธ
97
- shopt -s nocasematch
98
- if [[ ! "$filename" = "$pr_author"* ]]; then
99
- echo "- $file (ํ์ผ๋ช
์ '$pr_author'ํ์์ผ๋ก ํด์ฃผ์
์ผ ํฉ๋๋ค)" >> $GITHUB_STEP_SUMMARY
100
- success=false
101
- fi
102
- fi
103
- done
79
+ if [ "$success" = false ]; then
80
+ echo -e "\n:warning: ํ์ผ๋ช
์์ ์ ์ด๋ฌธ์๋ฅผ ์ ๊ฑฐํด ์ฃผ์ธ์." >> $GITHUB_STEP_SUMMARY
81
+ exit 1
104
82
fi
105
83
106
- if [ "$success" = false ]; then
107
- echo -e "\n:warning: ์ ๋ฌธ์ ๋ค์ ํด๊ฒฐํด ์ฃผ์ธ์:" >> $GITHUB_STEP_SUMMARY
108
- echo "1. ํ์ผ ๋์ ๋๋ฝ๋ ์ค๋ฐ๊ฟ์ ์ถ๊ฐํด ์ฃผ์ธ์." >> $GITHUB_STEP_SUMMARY
109
- echo "2. ํ์ผ๋ช
์์ ์ ์ด๋ฌธ์๋ฅผ ์ ๊ฑฐํด ์ฃผ์ธ์." >> $GITHUB_STEP_SUMMARY
110
- if [[ ! "$pr_labels" =~ "maintenance" ]]; then
111
- echo "3. ํ์ผ๋ช
์ ๋ฐ๋์ 'GitHub๊ณ์ ๋ช
' ๋๋ 'GitHub๊ณ์ ๋ช
-xxx' ํ์์ผ๋ก ํด์ฃผ์
์ผ ํฉ๋๋ค. (์: ${pr_author}.ts, ${pr_author}-1.ts, ${pr_author}-2.ts)" >> $GITHUB_STEP_SUMMARY
84
+ # ํ์ผ๋ช
๊ท์น ์ฒดํฌ - maintenance ๋ผ๋ฒจ์ด ์๋ ๊ฒฝ์ฐ์๋ง ์คํ
85
+ - name : Check filename rules
86
+ if : ${{ steps.pr-labels.outputs.has_maintenance != 'true' }}
87
+ run : |
88
+ files=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.sha }} | tr -d '"')
89
+ pr_author="${{ github.event.pull_request.user.login }}"
90
+ success=true
91
+
92
+ echo "## ํ์ผ๋ช
๊ท์น ์๋ฐ" >> $GITHUB_STEP_SUMMARY
93
+ for file in $files; do
94
+ if [ -f "$file" ]; then
95
+
96
+ # ํ์ผ๋ช
๋ง ์ถ์ถ (๊ฒฝ๋ก ์ ์ธ)
97
+ filename=$(basename "$file")
98
+
99
+ # ํ์ผ๋ช
์ด GitHub๊ณ์ ๋ช
์ธ์ง ํ์ธ
100
+ shopt -s nocasematch
101
+ if [[ ! "$filename" = "$pr_author"* ]]; then
102
+ echo "- $file (ํ์ผ๋ช
์ '$pr_author'ํ์์ผ๋ก ํด์ฃผ์
์ผ ํฉ๋๋ค)" >> $GITHUB_STEP_SUMMARY
103
+ success=false
104
+ fi
112
105
fi
106
+ done
107
+
108
+ if [ "$success" = false ]; then
109
+ echo -e "\n:warning: ํ์ผ๋ช
์ ๋ฐ๋์ 'GitHub๊ณ์ ๋ช
' ๋๋ 'GitHub๊ณ์ ๋ช
-xxx' ํ์์ผ๋ก ํด์ฃผ์
์ผ ํฉ๋๋ค. (์: ${pr_author}.ts, ${pr_author}-1.ts, ${pr_author}-2.ts)" >> $GITHUB_STEP_SUMMARY
113
110
exit 1
114
111
fi
115
112
env :
0 commit comments