novel-doomsday-resurgence/novel-tracker/scripts/backup-doc.sh
唐天洛 bc9188b0fd feat(git-workflow): 添加 Git 工作流和脚本
包含:
- GIT_WORKFLOW.md - 详细的 Git 工作流规范
- scripts/git-setup.sh - Git 工作区初始化脚本
- scripts/git-daily.sh - 日常 Git 管理脚本
- scripts/git-novel-workflow.sh - 小说专用 Git 工作流
- 更新 .gitignore 排除子仓库的 .git 目录
- 添加 novel-tracker/ 目录
- 添加 projects/ 目录(排除子仓库 .git)
- 添加 tomato-novel/ 目录
2026-03-30 15:50:36 +08:00

81 lines
2.2 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# backup-doc.sh - 文档归档脚本
# 使用方法:./backup-doc.sh <文件类型> <文件名>
# 示例:./backup-doc.sh outline
# 示例:./backup-doc.sh chapter chapter-05
set -e
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 获取当前日期
DATE=$(date +%Y%m%d)
# 参数检查
if [ $# -lt 1 ]; then
echo -e "${RED}错误:缺少参数${NC}"
echo "使用方法:./backup-doc.sh <文件类型> <文件名>"
echo "示例:./backup-doc.sh outline"
echo "示例:./backup-doc.sh chapter chapter-05"
exit 1
fi
DOC_TYPE=$1
DOC_NAME=$2
# 根据文档类型设置路径
if [ "$DOC_TYPE" = "outline" ]; then
SOURCE_FILE="current/outline.md"
ARCHIVE_DIR="archive/outline-history"
elif [ "$DOC_TYPE" = "chapter" ]; then
if [ -z "$DOC_NAME" ]; then
echo -e "${RED}错误:章节类型需要提供章节名${NC}"
exit 1
fi
SOURCE_FILE="current/$DOC_NAME.md"
ARCHIVE_DIR="archive/chapter-history/$DOC_NAME"
else
echo -e "${RED}错误:不支持的文档类型: $DOC_TYPE${NC}"
exit 1
fi
# 检查源文件是否存在
if [ ! -f "$SOURCE_FILE" ]; then
echo -e "${RED}错误:源文件不存在: $SOURCE_FILE${NC}"
exit 1
fi
# 获取当前版本号
CURRENT_VERSION=$(grep "版本:" "$SOURCE_FILE" | head -1 | sed 's/.*v\([0-9.]*\).*/\1/')
if [ -z "$CURRENT_VERSION" ]; then
echo -e "${YELLOW}警告:未找到版本号,使用默认版本号 v1.0${NC}"
CURRENT_VERSION="1.0"
fi
# 创建归档目录
mkdir -p "$ARCHIVE_DIR"
# 归档文件
ARCHIVE_FILE="$ARCHIVE_DIR/${DOC_NAME}-v${CURRENT_VERSION}-${DATE}.md"
echo -e "${GREEN}归档文件:$ARCHIVE_FILE${NC}"
cp "$SOURCE_FILE" "$ARCHIVE_FILE"
# 更新章节 CHANGELOG如果是章节
if [ "$DOC_TYPE" = "chapter" ]; then
CHANGELOG_FILE="$ARCHIVE_DIR/CHANGELOG.md"
if [ ! -f "$CHANGELOG_FILE" ]; then
echo "# 版本历史" > "$CHANGELOG_FILE"
echo "" >> "$CHANGELOG_FILE"
fi
echo "## [$DATE] - v$CURRENT_VERSION" >> "$CHANGELOG_FILE"
echo "备份文件: $ARCHIVE_FILE" >> "$CHANGELOG_FILE"
echo "" >> "$CHANGELOG.md"
fi
echo -e "${GREEN}归档完成!${NC}"