novel-doomsday-resurgence/novel-tracker/scripts/backup-doc.sh

81 lines
2.2 KiB
Bash
Raw Normal View History

#!/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}"