#!/bin/bash

# 项目文件清理脚本 - 删除非必要的临时脚本文件

set -e

echo "============================================="
echo "              项目文件清理脚本               "
echo "============================================="

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

echo_info() {
    echo -e "${GREEN}[信息]${NC} $1"
}

echo_warn() {
    echo -e "${YELLOW}[警告]${NC} $1"
}

echo_error() {
    echo -e "${RED}[错误]${NC} $1"
}

echo_success() {
    echo -e "${GREEN}[成功]${NC} $1"
}

# 需要保留的重要脚本文件
IMPORTANT_FILES=(
    "deploy.sh"           # 统一部署脚本
    "install_arm_ubuntu.sh"  # 安装脚本（根据README_INSTALL.md）
    "cleanup_scripts.sh"  # 当前清理脚本自身
)

# 额外删除的特定文件
EXTRA_FILES_TO_DELETE=(
    "deploy_to_remote.sh"
    "install_dependency_and_restart.sh"
    "create_fix_script.py"
    "fix_duplicate_app.py"
    "fix_socketio.py"
)

# 函数：检查文件是否为重要文件
is_important_file() {
    local filename="$1"
    for important_file in "${IMPORTANT_FILES[@]}"; do
        if [[ "$filename" == "$important_file" ]]; then
            return 0  # 是重要文件
        fi
    done
    return 1  # 不是重要文件
}

# 要删除的脚本模式列表
SCRIPT_PATTERNS=(
    "fix_*.sh"
    "test_*.sh"
    "test_*.py"
    "check_*.sh"
    "upload_*.sh"
    "restart_*.sh"
    "simple_*.sh"
    "direct_*.sh"
    "multiline_*.sh"
    "verify_*.sh"
    "force_*.sh"
    "kill_*.sh"
    "correct_*.sh"
    "final_*.sh"
    "create_*.sh"
    "remote_*.py"
)

# 统计要删除的文件数量
declare -i total_files=0

# 收集所有要删除的文件
declare -a files_to_delete

# 添加额外指定的文件
for file in "${EXTRA_FILES_TO_DELETE[@]}"; do
    if [[ -f "$file" ]]; then
        files_to_delete+=("$file")
        echo_info "  标记删除(额外): $file"
        ((total_files++))
    fi
done

for pattern in "${SCRIPT_PATTERNS[@]}"; do
    echo_info "查找匹配模式: $pattern"
    
    # 查找匹配的文件，但排除重要文件
    while IFS= read -r file; do
        # 获取文件名（不含路径）
        filename=$(basename "$file")
        
        # 检查是否为重要文件
        if is_important_file "$filename"; then
            echo_warn "  保留重要文件: $file"
        else
            files_to_delete+=("$file")
            echo_info "  标记删除: $file"
            ((total_files++))
        fi
    done < <(find "." -maxdepth 1 -name "$pattern" 2>/dev/null)
done

# 显示统计信息
echo ""
echo_info "总共标记了 $total_files 个文件进行删除"

# 确认是否继续
if [ $total_files -gt 0 ]; then
    echo ""
    echo_warn "注意: 此操作将永久删除这些文件，无法恢复！"
    echo -n "是否继续删除？(y/N): "
    read -r confirm
    
    if [[ "$confirm" == [Yy]* ]]; then
        echo ""
        echo_info "开始删除文件..."
        
        # 删除所有标记的文件
        for file in "${files_to_delete[@]}"; do
            if rm -f "$file"; then
                echo_info "  删除成功: $file"
            else
                echo_error "  删除失败: $file"
            fi
        done
        
        echo ""
        echo_success "清理完成！已删除 $total_files 个非必要文件"
    else
        echo ""
        echo_info "已取消清理操作"
    fi
else
    echo ""
    echo_info "没有找到需要删除的文件"
fi

# 显示当前目录中的脚本文件
echo ""
echo_info "当前目录中剩余的脚本文件:"
ls -la *.sh 2>/dev/null || echo "  没有找到shell脚本文件"

# 显示当前目录中的Python文件
echo ""
echo_info "当前目录中剩余的Python文件:"
ls -la *.py 2>/dev/null || echo "  没有找到Python文件"

echo ""
echo_success "清理脚本执行完毕！"