#!/usr/bin/env bash
# 部署流程：拉代码 → 安装依赖 → 构建前端到 dist/ → 后台启动后端 API（5599）
# 若 Nginx 未反代 /api，请先设置 API_BASE_URL 再执行，例如：
#   export API_BASE_URL="http://你的域名或IP:5599"
#   ./run.sh
# 使用 pm2 保活（推荐）：export USE_PM2=1 && ./run.sh

set -e
cd "$(dirname "$0")"
API_PORT="${PORT:-5599}"
export PORT="$API_PORT"

git fetch origin && git reset --hard origin/master
npm install --no-audit --no-fund

# 若设置了 API_BASE_URL，则写入 api.config.json，供 build 复制到 dist/
if [ -n "$API_BASE_URL" ]; then
  echo "[run.sh] 使用 API_BASE_URL=$API_BASE_URL"
  node -e "require('fs').writeFileSync('api.config.json', JSON.stringify({ apiBase: process.env.API_BASE_URL }, null, 2))"
fi

node build.js

# 后台启动 API：优先 pm2，否则 nohup
if [ -n "$USE_PM2" ] && command -v pm2 >/dev/null 2>&1; then
  echo "[run.sh] 使用 pm2 启动 API（端口 ${API_PORT}）..."
  (cd server && npm install --no-audit --no-fund --silent && pm2 delete view-airtep-api 2>/dev/null; true)
  (cd server && pm2 start index.js --name view-airtep-api)
  pm2 save 2>/dev/null || true
  echo "[run.sh] API 已由 pm2 托管。查看: pm2 list / pm2 logs view-airtep-api"
elif command -v nohup >/dev/null 2>&1; then
  echo "[run.sh] 使用 nohup 后台启动 API（端口 ${API_PORT}）..."
  mkdir -p logs
  nohup bash start-api.sh >> logs/api.log 2>&1 &
  echo "[run.sh] API 已在后台运行。查看日志: tail -f logs/api.log"
else
  echo "[run.sh] 前台启动 API（Ctrl+C 会停止服务）..."
  exec bash start-api.sh
fi

echo "[run.sh] 部署完成。前端静态在 dist/，API 端口 ${API_PORT}。检查: curl -s http://127.0.0.1:${API_PORT}/api/config"