Skip to content

Commit

Permalink
Update Rename and Commit Markdown Files.yml
Browse files Browse the repository at this point in the history
  • Loading branch information
GoldenPearls authored Sep 28, 2024
1 parent cadd4c2 commit 34e18f0
Showing 1 changed file with 100 additions and 33 deletions.
133 changes: 100 additions & 33 deletions .github/workflows/Rename and Commit Markdown Files.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
name: Rename and Commit Markdown Files
name: Rename Markdown Files and Folders in-place

on:
push:
branches:
- main # main λΈŒλžœμΉ˜μ— ν‘Έμ‹œλ  λ•Œ μ›Œν¬ν”Œλ‘œμš° 트리거
workflow_dispatch: # μˆ˜λ™μœΌλ‘œ μ›Œν¬ν”Œλ‘œμš°λ₯Ό μ‹€ν–‰ν•  수 μžˆλŠ” μ˜΅μ…˜
- main
workflow_dispatch:

jobs:
process-markdown:
Expand All @@ -13,47 +13,114 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
token: ${{ secrets.GITBOOKKEY }}
fetch-depth: 0
ref: main
with:
token: ${{ secrets.GITBOOKKEY }}
fetch-depth: 0

- name: Set UTF-8 Encoding
run: |
export LC_CTYPE="UTF-8" # UTF-8 인코딩을 λͺ…μ‹œμ μœΌλ‘œ μ„€μ •
- name: Rename and Update Markdown files
export LC_CTYPE="UTF-8"
- name: Rename Folders and Files Based on README H1 In-place
shell: bash
run: |
for file in $(find developLog -type f -name '*.md'); do
# 파일 λ‚΄μš©μ˜ 첫 번째 제λͺ© 쀄을 μΆ”μΆœ
set -euxo pipefail # 디버깅을 μœ„ν•œ μ…Έ μ˜΅μ…˜ μ„€μ •
# λͺ¨λ“  README.md 파일의 κ²½λ‘œμ™€ 헀딩을 미리 μˆ˜μ§‘
mapfile -t readme_files < <(find developLog -type f -name 'README.md')
declare -A dir_mappings # 원본 디렉토리와 μƒˆλ‘œμš΄ λ””λ ‰ν† λ¦¬μ˜ 맀핑을 μ €μž₯
# 디렉토리 이름 변경을 μœ„ν•œ 정보 μˆ˜μ§‘
for file in "${readme_files[@]}"; do
echo "Processing $file"
# README.md νŒŒμΌμ—μ„œ 첫 번째 h1 ν—€λ”© μΆ”μΆœ
heading=$(grep -m 1 '^# ' "$file" | sed 's/^# //')
# 헀딩이 μ—†λŠ” 경우 κ±΄λ„ˆλœλ‹ˆλ‹€
if [[ -z "$heading" ]]; then
echo "헀딩을 찾을 수 μ—†μŠ΅λ‹ˆλ‹€: $file"
continue
fi
# ν—€λ”© μ •μ œ (파일λͺ…에 μ ν•©ν•˜λ„λ‘)
heading=$(echo "$heading" | tr -cd '[:alnum:] _-')
# README.md 파일이 μžˆλŠ” 디렉토리 경둜
dir=$(dirname "$file")
parent_dir=$(dirname "$dir")
# μƒˆλ‘œμš΄ 디렉토리 이름 생성
new_dir="$parent_dir/$heading"
# 디렉토리 맀핑 μ €μž₯
dir_mappings["$dir"]="$new_dir"
done
# 디렉토리 이름 λ³€κ²½ (깊이 순으둜 μ •λ ¬ν•˜μ—¬ ν•˜μœ„ 디렉토리뢀터 λ³€κ²½)
for dir in "${!dir_mappings[@]}"; do
new_dir="${dir_mappings[$dir]}"
echo "Renaming $dir to $new_dir"
# 디렉토리가 이미 μ‘΄μž¬ν•˜λ©΄ κ±΄λ„ˆλœλ‹ˆλ‹€
if [[ -d "$new_dir" ]]; then
echo "디렉토리가 이미 μ‘΄μž¬ν•©λ‹ˆλ‹€: $new_dir. κ±΄λ„ˆλœλ‹ˆλ‹€."
continue
fi
mv "$dir" "$new_dir"
done
# λͺ¨λ“  λ§ˆν¬λ‹€μš΄ 파일의 경둜 μˆ˜μ§‘
mapfile -t markdown_files < <(find developLog -type f -name '*.md' ! -name 'README.md')
# 파일 이름 λ³€κ²½
for file in "${markdown_files[@]}"; do
echo "Processing $file"
# 첫 번째 h1 헀딩을 μΆ”μΆœν•˜μ—¬ 제λͺ©μœΌλ‘œ μ‚¬μš©
title=$(grep -m 1 '^#' "$file" | sed 's/^# //')
if [ -n "$title" ]; then
# 파일의 디렉토리 ꡬ쑰λ₯Ό μœ μ§€ν•˜λ©΄μ„œ 제λͺ©μ„ 기반으둜 μƒˆ 파일λͺ… 생성
if [[ -n "$title" ]]; then
# 제λͺ© μ •μ œ (파일λͺ…에 μ ν•©ν•˜λ„λ‘)
title=$(echo "$title" | tr -cd '[:alnum:] _-')
dir=$(dirname "$file")
new_filename="$dir/$title.md"
# λŒ€μƒ 디렉토리가 μ—†μœΌλ©΄ 생성
new_dir=$(dirname "$new_filename")
mkdir -p "$new_dir"
# 파일 이름이 λ™μΌν•œ κ²½μš°μ—λ„ κ°•μ œλ‘œ μ—…λ°μ΄νŠΈ
if [ "$file" != "$new_filename" ]; then
echo "Renaming $file to $new_filename"
mv "$file" "$new_filename"
ext="${file##*.}"
new_file="$dir/$title.$ext"
# λ™μΌν•œ μ΄λ¦„μ˜ 파일이 이미 μ‘΄μž¬ν•˜λ©΄ κ±΄λ„ˆλœλ‹ˆλ‹€
if [[ "$file" != "$new_file" && ! -e "$new_file" ]]; then
echo "Renaming $file to $new_file"
mv "$file" "$new_file"
else
echo "Updating timestamp for $file"
touch "$file" # 파일의 νƒ€μž„μŠ€νƒ¬ν”„λ₯Ό μ—…λ°μ΄νŠΈ
echo "파일 이름을 λ³€κ²½ν•  수 μ—†μŠ΅λ‹ˆλ‹€: $file. κ±΄λ„ˆλœλ‹ˆλ‹€."
fi
else
echo "No valid title found in $file, skipping."
echo "μœ νš¨ν•œ 제λͺ©μ„ 찾을 수 μ—†μŠ΅λ‹ˆλ‹€: $file. κ±΄λ„ˆλœλ‹ˆλ‹€."
fi
done
# λ³€κ²½λœ 파일과 디렉토리 확인
echo "λ³€κ²½λœ developLog λ””λ ‰ν† λ¦¬μ˜ λ‚΄μš©:"
find developLog -type f
- name: Commit changes
shell: bash
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 "Rename and update Markdown files based on h1 titles"
git push https://${{ secrets.GITBOOKKEY }}@github.com/GoldenPearls/gitBook.git # 변경사항을 main 브랜치둜 ν‘Έμ‹œ
set -euxo pipefail # 디버깅을 μœ„ν•œ μ…Έ μ˜΅μ…˜ μ„€μ •
# Git μ‚¬μš©μž μ„€μ • (이미 μ„€μ •λ˜μ–΄ μžˆλ‹€λ©΄ μƒλž΅ κ°€λŠ₯)
git config user.name 'GoldenPearls'
git config user.email 'prettylee620@naver.com'
# λ³€κ²½λœ 파일 μΆ”κ°€
git add developLog
# 컀밋 μž‘μ„±
git commit -m "Rename folders and markdown files based on h1 titles"
# 원격 μ €μž₯μ†Œμ— ν‘Έμ‹œ
git push origin HEAD:main --force

0 comments on commit 34e18f0

Please sign in to comment.