#!/bin/bash

# 配置部分
BINARY_NAME="pro-oplogs"                    # 二进制文件名
BUILD_OUTPUT_DIR="./.builds"     # 构建输出目录

# 服务器配置
REMOTE_USER="root"                       # 服务器用户名
REMOTE_HOST="47.108.221.99"                # 服务器地址
REMOTE_DIR="/data/app"        # 服务器部署目录
SERVICE_NAME="pro-oplogs"                  # 服务名称(如果有systemd服务)

echo "=== 开始部署流程 ==="

# 1. 编译Linux二进制文件
echo "正在编译Linux二进制文件..."

# 使用Go语言编译示例 (如果是其他语言请修改此部分)
# 如果不是Go项目，请替换为你的构建命令，如make等
GOOS=linux GOARCH=amd64 go build -o "${BUILD_OUTPUT_DIR}/${BINARY_NAME}" ./cmd/main

if [ $? -ne 0 ]; then
    echo "编译失败!"
    exit 1
fi

echo "编译成功: ${BUILD_OUTPUT_DIR}/${BINARY_NAME}"

# 2. 停止远程服务
echo "正在停止远程服务..."
ssh "${REMOTE_USER}@${REMOTE_HOST}" << EOF
    supervisorctl stop pro-oplogs
EOF

# 3. 上传到服务器
echo "正在上传文件到服务器..."
scp "${BUILD_OUTPUT_DIR}/${BINARY_NAME}" "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}/${BINARY_NAME}"
scp ./etc/oplogs_dev.yaml "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}/etc/oplogs_dev.yaml"
scp ./etc/supervisor.pro-oplogs.conf "${REMOTE_USER}@${REMOTE_HOST}:/etc/supervisor/conf.d/supervisor.pro-oplogs.conf"


# 4. 设置执行权限并启动服务
echo "正在设置权限并启动服务..."
ssh "${REMOTE_USER}@${REMOTE_HOST}" << EOF
    chmod +x "${REMOTE_DIR}/${BINARY_NAME}"
    supervisorctl start pro-oplogs
    sleep 2
    pgrep -f "${REMOTE_DIR}/${BINARY_NAME}" && echo "服务启动成功!" || echo "服务启动可能失败!"
EOF


echo "=== 部署完成 ==="