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