#!/bin/bash
# 兴趣构建项目打包脚本 - 只打包 .py 和 .md 文件
# 用法: bash pack_py_md.sh

set -e

# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 基础路径
BASE_DIR="/data/interest_tag/兴趣构建"
PROJECT_NAME="兴趣构建"
DATE=$(date +%Y%m%d_%H%M%S)
OUTPUT_FILE="${BASE_DIR}/${PROJECT_NAME}_py_md_${DATE}.tar.gz"

echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN}兴趣构建项目打包工具${NC}"
echo -e "${GREEN}只打包 .py 和 .md 文件${NC}"
echo -e "${GREEN}========================================${NC}"
echo ""

# 切换到项目根目录
cd "$BASE_DIR"

# 创建临时文件列表
TEMP_FILE_LIST=$(mktemp)
echo -e "${YELLOW}正在查找所有 .py 和 .md 文件...${NC}"

# 查找所有 .py 文件（排除 __pycache__ 目录）
find . -type f -name "*.py" ! -path "*/__pycache__/*" ! -name "*.pyc" > "$TEMP_FILE_LIST"

# 查找所有 .md 文件
find . -type f -name "*.md" >> "$TEMP_FILE_LIST"

# 统计文件数量
PY_COUNT=$(grep -c "\.py$" "$TEMP_FILE_LIST" || echo "0")
MD_COUNT=$(grep -c "\.md$" "$TEMP_FILE_LIST" || echo "0")
TOTAL_COUNT=$((PY_COUNT + MD_COUNT))

echo -e "${BLUE}找到文件统计:${NC}"
echo -e "  Python 文件 (.py): ${PY_COUNT}"
echo -e "  Markdown 文件 (.md): ${MD_COUNT}"
echo -e "  总计: ${TOTAL_COUNT}"
echo ""

if [ "$TOTAL_COUNT" -eq 0 ]; then
    echo -e "${RED}错误: 未找到任何 .py 或 .md 文件！${NC}"
    rm -f "$TEMP_FILE_LIST"
    exit 1
fi

# 显示前10个文件作为预览
echo -e "${YELLOW}文件预览（前10个）:${NC}"
head -10 "$TEMP_FILE_LIST" | sed 's/^/  /'
if [ "$TOTAL_COUNT" -gt 10 ]; then
    echo -e "  ... 还有 $((TOTAL_COUNT - 10)) 个文件"
fi
echo ""

# 确认打包
echo -n "确认开始打包? (yes/no): "
read confirm

if [ "$confirm" != "yes" ]; then
    echo "已取消打包。"
    rm -f "$TEMP_FILE_LIST"
    exit 0
fi

echo ""
echo -e "${YELLOW}正在打包...${NC}"

# 使用 tar 打包，从文件列表读取
tar -czf "$OUTPUT_FILE" --files-from="$TEMP_FILE_LIST" 2>/dev/null || {
    echo -e "${RED}打包失败！${NC}"
    rm -f "$TEMP_FILE_LIST"
    exit 1
}

# 清理临时文件
rm -f "$TEMP_FILE_LIST"

# 获取文件大小
FILE_SIZE=$(du -h "$OUTPUT_FILE" | cut -f1)

echo ""
echo -e "${GREEN}✓ 打包完成！${NC}"
echo -e "${BLUE}========================================${NC}"
echo -e "输出文件: ${OUTPUT_FILE}"
echo -e "文件大小: ${FILE_SIZE}"
echo -e "包含文件: ${TOTAL_COUNT} 个"
echo -e "${BLUE}========================================${NC}"
echo ""

# 显示文件列表命令提示
echo -e "${YELLOW}查看打包内容:${NC}"
echo "  tar -tzf $(basename "$OUTPUT_FILE") | head -20"
echo ""
echo -e "${YELLOW}解压文件:${NC}"
echo "  tar -xzf $(basename "$OUTPUT_FILE")"
echo ""

