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