Skip to content

更新目录结构和提交历史 #10

更新目录结构和提交历史

更新目录结构和提交历史 #10

name: 更新目录结构
on:
schedule:
- cron: '0 0 * * *' # 每天 UTC 00:00 运行
workflow_dispatch: # 允许手动触发
jobs:
update-directory-tree:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 1
- name: Setup Git
run: |
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
- name: Install tree
run: sudo apt-get install -y tree
- name: Update Directory Structure
run: |
# 生成目录结构
TREE_OUTPUT=$(tree -L 2 -I '.git|.github|node_modules' --charset=utf8)
# 创建临时文件
TEMP_FILE=$(mktemp)
# 处理 README.md
{
# 如果文件存在且包含目录结构部分,则保留其他部分
if [ -f README.md ] && grep -q "## 目录结构" README.md; then
# 提取目录结构部分之前的内容
sed -n '1,/## 目录结构/p' README.md | head -n -1
# 添加目录结构标题和更新时间
echo "## 目录结构"
echo "最后更新时间:$(date '+%Y年%m月%d日 %H:%M:%S')"
echo ""
echo "\`\`\`"
echo "$TREE_OUTPUT"
echo "\`\`\`"
# 提取目录结构部分之后的内容(如果有)
sed -n '/^```$/,$ p' README.md | tail -n +2
else
# 如果文件不存在或没有目录结构部分,创建新的内容
echo "# 个人笔记"
echo ""
echo "## 目录结构"
echo "最后更新时间:$(date '+%Y年%m月%d日 %H:%M:%S')"
echo ""
echo "\`\`\`"
echo "$TREE_OUTPUT"
echo "\`\`\`"
fi
} > "$TEMP_FILE"
# 替换原文件
mv "$TEMP_FILE" README.md
- name: Create Branch and Push Changes
run: |
# 获取当前日期
CURRENT_DATE=$(date +%Y%m%d)
BRANCH_NAME="directory-tree-updates-${CURRENT_DATE}"
# 检查远程分支是否存在
if git ls-remote --heads origin refs/heads/${BRANCH_NAME} | grep -q .; then
# 如果分支存在,删除它
git push origin --delete ${BRANCH_NAME} || true
fi
# 创建新的分支
git checkout -b ${BRANCH_NAME}
# 提交更改
git add README.md
git commit -m "docs: 更新目录结构"
# 强制推送到远程
git push -f origin ${BRANCH_NAME}