diff --git a/.github/workflows/build-daily-book.yml b/.github/workflows/build-daily-book.yml index 139f06a..b27d487 100644 --- a/.github/workflows/build-daily-book.yml +++ b/.github/workflows/build-daily-book.yml @@ -32,16 +32,7 @@ jobs: export PATH=$HOME/.cargo/bin:$PATH curl -sL https://github.com/rust-lang/mdBook/releases/download/v0.4.51/mdbook-v0.4.51-x86_64-unknown-linux-gnu.tar.gz | tar -xz -C $HOME/.cargo/bin - - name: Replace image URLs in daily notes - run: | - echo "开始替换 daily/ 目录及其子目录下所有 Markdown 文件的内容..." - echo "使用的代理前缀: ${{ env.IMAGE_PROXY_URL }}" - find daily -type f -name "*.md" -exec sed -i \ - -e 's|upload.chinaz.com|pic.chinaz.com|g' \ - -e 's|https://pic.chinaz.com|${{ env.IMAGE_PROXY_URL }}https://pic.chinaz.com|g' {} + - echo "URL 替换完成。" - - - name: Archive old notes before generating summary + - name: Archive old notes id: archive run: | echo "开始检查并归档旧的日刊..." @@ -71,18 +62,34 @@ jobs: done echo "文件归档检查完成。" + - name: Prepare source files for mdBook + run: | + echo "准备 mdBook 构建源文件..." + # 确保 src 目录存在,并清空旧的 daily 内容 + mkdir -p src + rm -rf src/daily/ + # 递归复制归档后的 `daily` 目录到 `src` + cp -r daily/ src/ + echo "源文件已复制到 src/daily/。" + + - name: Replace image URLs in src directory + run: | + echo "开始替换 src/daily/ 目录及其子目录下所有 Markdown 文件的内容..." + echo "使用的代理前缀: ${{ env.IMAGE_PROXY_URL }}" + # 在 src/daily 目录中执行替换,而不是在原始的 daily 目录 + find src/daily -type f -name "*.md" -exec sed -i \ + -e 's|upload.chinaz.com|pic.chinaz.com|g' \ + -e 's|https://pic.chinaz.com|${{ env.IMAGE_PROXY_URL }}https://pic.chinaz.com|g' {} + + echo "URL 替换完成。" + - name: Generate SUMMARY.md from final file structure id: generate_summary run: | - # 确保 src 目录存在 - mkdir -p src - rm -rf src/daily/ - # 递归复制 `daily` 目录到 `src`。因为此步在归档后运行,所以会复制最终的文件结构 - cp -r daily/ src/ + # 注意:此时 src/daily 目录已由上一步准备好并处理完毕 SUMMARY_FILE="src/SUMMARY.md" - # 递归查找所有日刊,确保能找到所有文件 + # 查找逻辑不变,仍然从原始的 daily 目录中查找最新文件 LATEST_DAILY_FILE=$(find daily -type f -name "*.md" | sort -r | head -n 1) if [ -z "$LATEST_DAILY_FILE" ]; then @@ -90,7 +97,7 @@ jobs: exit 1 fi - # 最新的文件还在 'daily' 根目录下,复制它作为 'Today' 页面 + # 最新的文件还在 'daily' 根目录下,复制它作为 'Today' 页面到 src 目录 LATEST_FILENAME=$(basename "$LATEST_DAILY_FILE") cp "$LATEST_DAILY_FILE" "src/$LATEST_FILENAME" @@ -100,24 +107,19 @@ jobs: echo "[Today]($LATEST_FILENAME)" >> "$SUMMARY_FILE" echo "" >> "$SUMMARY_FILE" - # --- 生成按月分组的列表(已适配归档后的目录结构)--- + # --- 生成按月分组的列表 --- current_month="" - # 'find' 会找到所有深度的文件,'sort -r' 确保最新文件在前 + # 查找逻辑不变,目录结构基于原始的 daily 目录 for file in $(find daily -type f -name "*.md" | sort -r); do filename_only=$(basename "$file" .md) month=$(echo "$filename_only" | cut -d'-' -f1,2) if [ "$month" != "$current_month" ]; then - # echo "" >> "$SUMMARY_FILE" echo "# $month" >> "$SUMMARY_FILE" current_month=$month fi link_title=$(echo "$filename_only" | cut -d'-' -f2,3) - - # 关键:此命令能正确处理两种情况 - # 1. file = 'daily/YYYY-MM-DD.md' -> relative_path = 'YYYY-MM-DD.md' - # 2. file = 'daily/YYYY-MM/YYYY-MM-DD.md' -> relative_path = 'YYYY-MM/YYYY-MM-DD.md' relative_path=${file#daily/} # 生成的链接将是正确的 'daily/...' 路径 @@ -173,7 +175,7 @@ jobs: git config --local user.email "action@github.com" git config --local user.name "GitHub Action" - git add src/SUMMARY.md today/ + git add src/SUMMARY.md today/ daily/ if [ -f "rss.xml" ]; then git add rss.xml else