81 lines
2.2 KiB
Bash
81 lines
2.2 KiB
Bash
|
|
#!/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}"
|