#!/bin/bash

set -e

RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
NC='\033[0m'

log() {
    echo -e "${CYAN}[$(date '+%Y-%m-%d %H:%M:%S')] $1${NC}"
}

log_success() {
    echo -e "${GREEN}[$(date '+%Y-%m-%d %H:%M:%S')] ✅ $1${NC}"
}

log_error() {
    echo -e "${RED}[$(date '+%Y-%m-%d %H:%M:%S')] ❌ $1${NC}"
}

log_warn() {
    echo -e "${YELLOW}[$(date '+%Y-%m-%d %H:%M:%S')] ⚠️ $1${NC}"
}

log "=============================================="
log "     服务器重置初始化脚本"
log "=============================================="

log "1. 停止并删除所有容器"
if podman ps -q | grep -q .; then
    log_warn "正在停止所有运行中的容器..."
    podman stop $(podman ps -q)
    log_success "容器已停止"
else
    log "没有运行中的容器"
fi

if podman ps -a -q | grep -q .; then
    log_warn "正在删除所有容器..."
    podman rm -f $(podman ps -a -q)
    log_success "容器已删除"
else
    log "没有容器需要删除"
fi

log "2. 删除所有镜像"
if podman images -q | grep -q .; then
    log_warn "正在删除所有镜像..."
    podman rmi -f $(podman images -q)
    log_success "镜像已删除"
else
    log "没有镜像需要删除"
fi

log "3. 删除所有网络"
if podman network ls -q | grep -q .; then
    log_warn "正在删除所有网络..."
    podman network rm $(podman network ls -q)
    log_success "网络已删除"
else
    log "没有网络需要删除"
fi

log "4. 删除所有卷"
if podman volume ls -q | grep -q .; then
    log_warn "正在删除所有卷..."
    podman volume rm $(podman volume ls -q)
    log_success "卷已删除"
else
    log "没有卷需要删除"
fi

log "5. 创建自定义网络 fzx-network"
log "创建网络配置..."
podman network create fzx-network --subnet=172.20.0.0/16 --gateway=172.20.0.1
log_success "网络 fzx-network 创建成功"

log "6. 配置DNS解析"
log "更新 /etc/resolv.conf..."
echo "nameserver 223.5.5.5" > /etc/resolv.conf
echo "nameserver 119.29.29.29" >> /etc/resolv.conf
log_success "DNS配置已更新"

log "7. 创建工作目录"
WORK_DIR="/opt/FzxBDSH"
if [ ! -d "$WORK_DIR" ]; then
    log "创建工作目录 $WORK_DIR..."
    mkdir -p "$WORK_DIR"
    log_success "工作目录创建成功"
else
    log_warn "工作目录已存在，清理旧文件..."
    rm -rf "$WORK_DIR"/*
    log_success "工作目录已清理"
fi

log "8. 验证环境依赖"
log "检查 Podman 版本..."
PODMAN_VERSION=$(podman --version | awk '{print $3}')
log "Podman 版本: $PODMAN_VERSION"

log "检查 Maven 版本..."
if command -v mvn &> /dev/null; then
    MAVEN_VERSION=$(mvn --version | head -1 | awk '{print $3}')
    log "Maven 版本: $MAVEN_VERSION"
else
    log_warn "Maven 未安装"
fi

log "检查 npm 版本..."
if command -v npm &> /dev/null; then
    NPM_VERSION=$(npm --version)
    log "npm 版本: $NPM_VERSION"
else
    log_warn "npm 未安装"
fi

log "检查 git 版本..."
if command -v git &> /dev/null; then
    GIT_VERSION=$(git --version | awk '{print $3}')
    log "Git 版本: $GIT_VERSION"
else
    log_warn "Git 未安装"
fi

log "=============================================="
log_success "✅ 服务器重置初始化完成!"
log "=============================================="
log "下一步：克隆代码仓库并执行部署"
echo ""