This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Rename and Add New Markdown Files | |
on: | |
push: | |
branches: | |
- main # main 브랜치에 푸시될 때 워크플로우 트리거 | |
workflow_dispatch: # 수동으로 워크플로우를 실행할 수 있는 옵션 | |
jobs: | |
process-markdown: | |
runs-on: ubuntu-latest # 최신 Ubuntu 환경에서 워크플로우 실행 | |
steps: | |
- name: Checkout repository # GitHub 리포지토리의 코드를 체크아웃 | |
uses: actions/checkout@v4 # GitHub에서 제공하는 checkout 액션을 사용 | |
with: | |
token: ${{ secrets.GITBOOKKEY }} # GitHub Personal Access Token 사용 | |
fetch-depth: 0 # 최신 커밋만 가져오도록 설정하여 성능 최적화 | |
- name: Set UTF-8 Encoding # UTF-8 인코딩을 설정하여 인코딩 문제 방지 | |
run: | | |
export LC_CTYPE="UTF-8" # UTF-8 인코딩 명시적으로 설정 | |
- name: Rename and Add New Markdown files # Markdown 파일을 이름 변경 및 복사 | |
run: | | |
find developLog -type f -name '*.md' | while IFS= read -r file; do | |
# README.md 및 SUMMARY.md 파일은 건너뜀 | |
if [[ "$file" == *"README.md" ]] || [[ "$file" == *"SUMMARY.md" ]]; then | |
echo "Skipping $file" # 해당 파일은 건너뜀 | |
continue # 다음 파일로 진행 | |
fi | |
# 파일 내용의 첫 번째 제목 줄(H1)을 추출 | |
title=$(grep -m 1 '^#' "$file" | sed 's/^# //') | |
if [ -n "$title" ]; then | |
# 파일의 디렉토리 구조를 유지하면서 제목을 기반으로 새 파일명 생성 | |
dir=$(dirname "$file") | |
new_filename="$dir/$title.md" | |
new_dir=$(dirname "$new_filename") | |
# 파일 이름이 동일한 경우에도 강제로 업데이트 | |
if [ "$file" != "$new_filename" ]; then | |
echo "Renaming $file to $new_filename" | |
git mv "$file" "$new_filename" # Git이 이름 변경으로 인식하게 git mv 사용 | |
else | |
echo "Updating timestamp for $file" | |
touch "$file" # 파일의 타임스탬프를 업데이트 | |
fi | |
else | |
echo "No valid title found in $file, skipping." | |
fi | |
done | |
echo "Rename and update completed successfully!" # 작업 완료 메시지 출력 | |
- name: Commit changes # 변경 사항을 커밋하고 푸시 | |
run: | | |
git add -A # 모든 변경 사항 추가 | |
git config --global user.name 'github-actions[bot]' # 커밋 사용자 이름 설정 | |
git config --global user.email 'github-actions[bot]@users.noreply.github.com' # 커밋 사용자 이메일 설정 | |
git diff --staged --quiet || git commit -m "Add new Markdown files based on h1 titles" # 변경 사항이 있으면 커밋 | |
git push https://${{ secrets.GITBOOKKEY }}@github.com/GoldenPearls/gitBook.git # 변경 사항을 원격 리포지토리의 main 브랜치로 푸시 |