@@ -20,15 +20,15 @@ jobs:
2020 - name : Checkout
2121 uses : actions/checkout@v3
2222 with :
23- fetch-depth : 2 # 이전 로그 2개까지 해서 변경점 비교(디폴트는 1)
23+ fetch-depth : 2
2424
2525 - name : Check if LeetHub Commit
2626 id : check_leethub
2727 run : |
2828 COMMIT_MSG=$(git log -1 --pretty=%B | tail -n 1)
2929 echo "Latest commit message: $COMMIT_MSG"
3030
31- if [[ "$COMMIT_MSG" == Time:* && "$COMMIT_MSG" == *"- LeetHub" ]] ; then
31+ if echo "$COMMIT_MSG" | grep -q " LeetHub"; then
3232 echo "should_run=true" >> $GITHUB_OUTPUT
3333 echo "commit_msg=${COMMIT_MSG}" >> $GITHUB_OUTPUT
3434 echo "LeetHub 커밋 확인, 패키지 이사 작업 준비 ✅"
@@ -61,23 +61,34 @@ jobs:
6161 fi
6262 done
6363
64- - name : Extract Level from README
64+ - name : Extract Level from README or stats.json
6565 id : extract_level
6666 if : steps.check_leethub.outputs.should_run == 'true' && steps.detect_package.outputs.PACKAGE_NAME != ''
6767 run : |
6868 PACKAGE_NAME="${{ steps.detect_package.outputs.PACKAGE_NAME }}"
6969 README_PATH="$PACKAGE_NAME/README.md"
70-
71- if [ ! -f "$README_PATH" ]; then
72- echo "README.md 파일 없음 ❌"
73- echo "leetcode_level=Unknown" >> $GITHUB_OUTPUT
74- exit 0
70+ STATS_PATH="stats.json"
71+ LEVEL=""
72+
73+ # 1순위: README에서 추출
74+ if [ -f "$README_PATH" ]; then
75+ LEVEL=$(grep -oP '(?<=<h3>).*?(?=</h3>)' "$README_PATH" | head -n 1)
76+ echo "README에서 추출: $LEVEL"
7577 fi
7678
77- # h3 태그 안에서 난이도 추출
78- LEVEL=$(grep -oP '(?<=<h3>).*?(?=</h3>)' "$README_PATH" | head -n 1)
79+ # 2순위: stats.json에서 추출
80+ if [ -z "$LEVEL" ] && [ -f "$STATS_PATH" ]; then
81+ LEVEL=$(cat "$STATS_PATH" | python3 -c "
82+ import sys, json
83+ data = json.load(sys.stdin)
84+ pkg = '$PACKAGE_NAME'
85+ difficulty = data.get('leetcode', {}).get('shas', {}).get(pkg, {}).get('difficulty', '')
86+ print(difficulty.capitalize() if difficulty else '')
87+ " )
88+ echo " stats.json에서 추출: $LEVEL"
89+ fi
7990
80- # 없으면 fallback
91+ # 최종 fallback
8192 if [ -z "$LEVEL" ]; then
8293 LEVEL="Unknown"
8394 fi
@@ -98,14 +109,13 @@ jobs:
98109
99110 - name : Move Directory
100111 run : |
101- PACKAGE_NAME="${{ needs.detect.outputs.PACKAGE_NAME }}"
112+ PACKAGE_NAME="${{ needs.detect.outputs.package_name }}"
102113 LEVEL_DIRECTORY="${{ needs.detect.outputs.level }}"
103114 ROOT_DIR="LeetCode"
104115
105116 echo "옮겨야 할 패키지 확인 : $PACKAGE_NAME"
106117 echo "감지된 레벨 : $LEVEL_DIRECTORY"
107118
108- # 먼저 기존에 동일한 디렉토리 위치가 있는지 탐색
109119 FOUND_EXISTING_PATH=""
110120 for dir in "$ROOT_DIR"/*; do
111121 if [ -d "$dir/$PACKAGE_NAME" ]; then
@@ -115,14 +125,11 @@ jobs:
115125 fi
116126 done
117127
118- # 기존 위치로 이동
119128 if [ -n "$FOUND_EXISTING_PATH" ]; then
120129 DEST="$FOUND_EXISTING_PATH/$PACKAGE_NAME"
121130 echo "→ 기존 디렉토리로 병합 이동 : $DEST"
122131 mv "$PACKAGE_NAME"/* "$DEST"/
123132 rmdir "$PACKAGE_NAME" || true
124-
125- # 새로 이동해야 할 경우
126133 else
127134 DEST="$ROOT_DIR/$LEVEL_DIRECTORY/$PACKAGE_NAME"
128135 echo "→ 새 디렉토리로 이동 : $DEST"
@@ -135,9 +142,10 @@ jobs:
135142 COMMIT_MSG="${{ needs.detect.outputs.commit_msg }}"
136143 echo "커밋 메세지 확인: $COMMIT_MSG"
137144
138- git config --global user.name "woolnd "
139- git config --global user.email "wodnd0418 @gmail.com"
145+ git config --global user.name "kimD0ngjun "
146+ git config --global user.email "chickentasty0112 @gmail.com"
140147
141148 git add .
142149 git commit -m "$COMMIT_MSG" || echo "No changes to commit"
150+ git pull --rebase origin main
143151 git push
0 commit comments