#!/bin/bash

# 结伴客项目部署脚本
# 用于将项目部署到远程 CentOS 服务器

set -e  # 遇到错误时退出

# 配置信息
REMOTE_HOST="1.13.156.49"
REMOTE_USER="root"
REMOTE_PASSWORD="Aiotjkl$743838"
BACKEND_REMOTE_PATH="/data/nodejs/jiebanke"
ADMIN_SYSTEM_REMOTE_PATH="/data/vue/jiebanke"
WEBSITE_REMOTE_PATH="/data/website/jiebanke"

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

echo -e "${GREEN}========== 结伴客项目部署脚本 ==========${NC}"

# 检查是否提供了部署目标参数
if [ $# -eq 0 ]; then
    echo -e "${YELLOW}使用方法:${NC}"
    echo "  ./deploy.sh all        - 部署所有模块"
    echo "  ./deploy.sh backend    - 部署后端服务"
    echo "  ./deploy.sh admin      - 部署后台管理系统"
    echo "  ./deploy.sh website    - 部署官方网站"
    exit 1
fi

# 检查rsync是否安装
check_rsync() {
    if ! command -v rsync &> /dev/null; then
        echo -e "${RED}错误: 未找到 rsync 命令，请先安装 rsync${NC}"
        exit 1
    fi
}

# 部署后端服务
deploy_backend() {
    echo -e "${BLUE}正在部署后端服务到 $REMOTE_HOST:$BACKEND_REMOTE_PATH ...${NC}"
    
    # 检查rsync
    check_rsync
    
    # 同步文件到远程服务器
    echo -e "${BLUE}正在同步文件到远程服务器...${NC}"
    rsync -avz --delete \
        --exclude node_modules \
        --exclude .git \
        --exclude logs \
        ../backend/ $REMOTE_USER@$REMOTE_HOST:$BACKEND_REMOTE_PATH/
    
    echo -e "${GREEN}后端服务部署完成${NC}"
}

# 部署后台管理系统
deploy_admin_system() {
    echo -e "${BLUE}正在部署后台管理系统到 $REMOTE_HOST:$ADMIN_SYSTEM_REMOTE_PATH ...${NC}"
    
    # 检查rsync
    check_rsync
    
    # 同步文件到远程服务器
    echo -e "${BLUE}正在同步文件到远程服务器...${NC}"
    rsync -avz --delete \
        --exclude node_modules \
        --exclude .git \
        --exclude dist \
        ../admin-system/ $REMOTE_USER@$REMOTE_HOST:$ADMIN_SYSTEM_REMOTE_PATH/
    
    echo -e "${GREEN}后台管理系统部署完成${NC}"
}

# 部署官方网站
deploy_website() {
    echo -e "${BLUE}正在部署官方网站到 $REMOTE_HOST:$WEBSITE_REMOTE_PATH ...${NC}"
    
    # 检查rsync
    check_rsync
    
    # 同步文件到远程服务器
    echo -e "${BLUE}正在同步文件到远程服务器...${NC}"
    rsync -avz --delete \
        --exclude node_modules \
        --exclude .git \
        ../website/ $REMOTE_USER@$REMOTE_HOST:$WEBSITE_REMOTE_PATH/
    
    echo -e "${GREEN}官方网站部署完成${NC}"
}


# 部署所有模块
deploy_all() {
    echo -e "${BLUE}开始部署所有模块...${NC}"
    deploy_backend
    deploy_admin_system
    deploy_website
    echo -e "${GREEN}所有模块部署完成${NC}"
}

# 根据参数执行相应操作
case $1 in
    "backend")
        deploy_backend
        ;;
    "admin")
        deploy_admin_system
        ;;
    "website")
        deploy_website
        ;;
    "all")
        deploy_all
        ;;
    *)
        echo -e "${RED}未知参数: $1${NC}"
        echo -e "${YELLOW}请使用: all, backend, admin, website${NC}"
        exit 1
        ;;
esac

echo -e "${GREEN}========== 部署完成 ==========${NC}"