@@ -2,37 +2,58 @@ name: 🔗 从 SUMMARY.md 更新目录
22
33on :
44 push :
5- # 当根目录下的 SUMMARY.md 被修改时触发工作流
65 paths :
76 - ' SUMMARY.md'
87 workflow_dispatch :
8+
99jobs :
1010 update-mu-lu :
1111 runs-on : ubuntu-latest
1212
1313 steps :
1414 - name : Checkout repository
15- uses : actions/checkout@v5
15+ uses : actions/checkout@v6
1616 with :
17- # 获取完整历史记录,便于后续提交操作
17+ ssh-key : ${{ secrets.DEPLOY_KEY }}
1818 fetch-depth : 0
1919
20- - name : Delete existing mu-lu.md if exists
20+ - name : Process mu-lu.md
21+ id : process
2122 run : |
22- if [ -f mu-lu.md ]; then
23- echo "Deleting existing mu-lu.md..."
24- rm mu-lu.md
25- else
26- echo "mu-lu.md not found, skipping deletion."
23+ set -e
24+
25+ # 如果 mu-lu.md 不存在,直接生成
26+ if [ ! -f mu-lu.md ]; then
27+ cp SUMMARY.md mu-lu.md
28+ sed -i '1s/^# Table of contents$/# 目录/' mu-lu.md
29+ echo "mu-lu.md created from SUMMARY.md"
30+ echo "changed=true" >> $GITHUB_OUTPUT
31+ exit 0
2732 fi
2833
29- - name : Copy SUMMARY.md to mu-lu.md
30- run : |
31- cp SUMMARY.md mu-lu.md
32- echo "Copied SUMMARY.md to mu-lu.md"
34+ # mu-lu.md 存在时,先生成 mu-lu-2.md
35+ cp mu-lu.md mu-lu-2.md
36+ sed -i '1s/^# 目录$/# Table of contents/' mu-lu-2.md
37+
38+ # 去掉第一行比较内容
39+ tail -n +2 SUMMARY.md > /tmp/summary_tail.txt
40+ tail -n +2 mu-lu-2.md > /tmp/mulu2_tail.txt
41+
42+ if diff -q /tmp/summary_tail.txt /tmp/mulu2_tail.txt >/dev/null; then
43+ echo "No changes detected, mu-lu.md is up-to-date."
44+ rm mu-lu-2.md
45+ echo "changed=false" >> $GITHUB_OUTPUT
46+ else
47+ echo "Changes detected, updating mu-lu.md..."
48+ rm mu-lu.md mu-lu-2.md
49+ cp SUMMARY.md mu-lu.md
50+ sed -i '1s/^# Table of contents$/# 目录/' mu-lu.md
51+ echo "changed=true" >> $GITHUB_OUTPUT
52+ fi
3353
3454 - name : Commit and push changes
35- uses : stefanzweifel/git-auto-commit-action@v6
55+ if : steps.process.outputs.changed == 'true'
56+ uses : stefanzweifel/git-auto-commit-action@v7
3657 with :
3758 commit_message : " 从 SUMMARY.md 更新 mu-lu.md [skip ci]"
3859 file_pattern : " mu-lu.md"
0 commit comments