#!/bin/bash

# 结伴客后端文件清理脚本
# 删除不需要的文件，保持项目结构整洁

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

# 配置参数
BACKEND_DIR="$(pwd)"

# 显示警告信息
show_warning() {
    echo -e "${YELLOW}警告：此脚本将删除backend目录中不需要的文件。${NC}"
    echo -e "${YELLOW}请确保在运行此脚本前已备份重要数据。${NC}"
    echo -e "${BLUE}按Enter键继续，或按Ctrl+C取消...${NC}"
    read -r
}

# 删除指定文件
remove_file() {
    local file_path="$1"
    if [ -f "$file_path" ]; then
        echo -e "${BLUE}删除文件: $file_path${NC}"
        rm -f "$file_path"
        if [ $? -eq 0 ]; then
            echo -e "${GREEN}已删除: $file_path${NC}"
        else
            echo -e "${RED}删除失败: $file_path${NC}"
        fi
    else
        echo -e "${YELLOW}文件不存在: $file_path${NC}"
    fi
}

# 删除指定目录（如果为空）
remove_empty_dir() {
    local dir_path="$1"
    if [ -d "$dir_path" ] && [ -z "$(ls -A "$dir_path")" ]; then
        echo -e "${BLUE}删除空目录: $dir_path${NC}"
        rm -d "$dir_path"
        if [ $? -eq 0 ]; then
            echo -e "${GREEN}已删除: $dir_path${NC}"
        else
            echo -e "${RED}删除失败: $dir_path${NC}"
        fi
    fi
}

# 清理测试文件
cleanup_test_files() {
    echo -e "${BLUE}\n清理测试相关文件...${NC}"
    remove_file "$BACKEND_DIR/test-api.js"
    remove_file "$BACKEND_DIR/test-swagger.js"
    # 可以保留scripts目录下的测试脚本，因为它们可能对开发有用
}

# 清理文档文件
cleanup_docs() {
    echo -e "${BLUE}\n清理文档文件...${NC}"
    remove_file "$BACKEND_DIR/README_DEVELOPMENT.md"
    remove_file "$BACKEND_DIR/README_SCRIPTS.md"
    # 保留主要的README.md文件
}

# 清理Docker相关文件
cleanup_docker_files() {
    echo -e "${BLUE}\n清理Docker相关文件...${NC}"
    remove_file "$BACKEND_DIR/docker-compose.yml"
    remove_file "$BACKEND_DIR/jiebanke.conf"
}

# 清理旧的启动脚本
cleanup_old_scripts() {
    echo -e "${BLUE}\n清理旧的启动脚本...${NC}"
    remove_file "$BACKEND_DIR/start.sh"
    remove_file "$BACKEND_DIR/stop.sh"
    remove_file "$BACKEND_DIR/restart.sh"
    remove_file "$BACKEND_DIR/status.sh"
}

# 清理临时文件和缓存
cleanup_temp_files() {
    echo -e "${BLUE}\n清理临时文件和缓存...${NC}"
    find "$BACKEND_DIR" -name "*.log" -exec rm -f {} \;
    find "$BACKEND_DIR" -name "*.tmp" -exec rm -f {} \;
    find "$BACKEND_DIR" -name "*.temp" -exec rm -f {} \;
    find "$BACKEND_DIR" -name ".DS_Store" -exec rm -f {} \;
}

# 验证并设置脚本权限
set_script_permissions() {
    echo -e "${BLUE}\n设置脚本执行权限...${NC}"
    # 为新创建的脚本设置执行权限
    chmod +x "$BACKEND_DIR/sync_to_server.sh" 2>/dev/null
    chmod +x "$BACKEND_DIR/start_server.sh" 2>/dev/null
    chmod +x "$BACKEND_DIR/cleanup_files.sh" 2>/dev/null
    echo -e "${GREEN}脚本权限设置完成${NC}"
}

# 显示清理结果摘要
show_summary() {
    echo -e "${GREEN}\n文件清理完成！${NC}"
    echo -e "${YELLOW}剩余核心文件：${NC}"
    echo -e "  - package.json, package-lock.json (项目依赖配置)"
    echo -e "  - .env, .env.example (环境配置)"
    echo -e "  - ecosystem.config.js (PM2配置)"
    echo -e "  - src/ (源代码目录)"
    echo -e "  - config/ (配置目录)"
    echo -e "  - scripts/ (脚本目录)"
    echo -e "  - README.md (项目说明)"
    echo -e "  - sync_to_server.sh (新的同步脚本)"
    echo -e "  - start_server.sh (新的服务器启动脚本)"
    echo -e "  - cleanup_files.sh (此清理脚本)"
}

# 执行清理
main() {
    show_warning
    cleanup_test_files
    cleanup_docs
    cleanup_docker_files
    cleanup_old_scripts
    cleanup_temp_files
    set_script_permissions
    show_summary
}

# 执行主函数
main