#!/bin/bash

export DBG_STATS=1
export DBG_PATH=1
# LOG_DIR 用于本脚本在 rc.local 场景下重定向 mp-sdk 的 stderr 到文件；
# 与业务日志（由 log_config.json 的 logDir 控制）解耦，固定使用 /var/log 兜底
LOG_DIR=/var/log

PROG=@BIN_DIR@/mp-sdk
GUARD=@BIN_DIR@/mp_guard.sh
PROG_SPEEDER=@BIN_DIR@/mp-speeder

USAGE="
Usage: $(basename $0) [command] [options]

mp-sdk linux sdk tool 2023.11
Options:
    help
    start
    stop
    stopf
    restart
    status
"

ps ax >/dev/null 2>&1
if [ "$?" -eq "0" ];then
  PS_EXEC="ps ax"
else
  ps ww >/dev/null 2>&1
  [[ "$?" -eq "0" ]] && PS_EXEC="ps ww" || PS_EXEC="ps"
fi


stop() {
  echo ""
  pid=$(${PS_EXEC} | grep ${PROG} | grep -v grep | awk '{print $1}')
  guard_pid=$(${PS_EXEC} | grep ${GUARD} | grep -v grep | awk '{print $1}')
  [[ -n ${guard_pid} ]] && kill -9 ${guard_pid}
  if [ -z ${pid} ]; then
    echo "${PROG}未运行！"
  else
    echo "准备关闭SDK进程${pid}"
    kill ${pid}
    sleep 1
    echo "${PROG}已关闭！"
  fi
  echo ""
}

stopf() {
  echo ""
  pid=$(${PS_EXEC} | grep ${PROG} | grep -v grep | awk '{print $1}')
  guard_pid=$(${PS_EXEC} | grep ${GUARD} | grep -v grep | awk '{print $1}')
  [[ -n ${guard_pid} ]] && kill -9 ${guard_pid}
  if [ -z ${pid} ]; then
    echo "${PROG}未运行！"
  else
    echo "准备关闭SDK进程${pid}"
    kill -9 ${pid}
    sleep 1
    echo "${PROG}已关闭！"
  fi
  pid=$(${PS_EXEC} | grep ${PROG_SPEEDER} | grep -v grep | awk '{print $1}')
  if [ -z ${pid} ]; then
    echo "${PROG_SPEEDER}未运行！"
  else
    echo "准备关闭加速进程${pid}"
    kill -9 ${pid}
    sleep 1
    echo "${PROG_SPEEDER}已关闭！"
  fi
  echo ""
}
 
start() {
  echo ""
  # LOG_DIR 已在文件顶部通过占位符注入；此处仅确保目录存在
  mkdir -p "${LOG_DIR}"

  pid=$(${PS_EXEC} | grep ${PROG} | grep -v grep | awk '{print $1}')
  if [ -z ${pid} ]; then
    nohup ${PROG} 1>/dev/null 2>>${LOG_DIR}/mp-sdk.log &
    pid=$(${PS_EXEC} | grep ${PROG} | grep -v grep | awk '{print $1}')
    echo "应用 ${PROG}启动成功，pid=${pid}"
  else
    echo "应用 ${PROG} 正在运行，pid = ${pid}"
  fi
  guard_pid=$(${PS_EXEC} | grep ${GUARD} | grep -v grep | awk '{print $1}')
  [[ -z ${guard_pid} ]] && nohup $GUARD > /dev/null 2>&1 &
  echo ""
}
 
status() {
  echo ""
  pid=$(${PS_EXEC} | grep ${PROG} | grep -v grep | awk '{print $1}')
  if [ -z ${pid} ]; then
    echo "应用 ${PROG} 未运行"
  else
    echo "应用 ${PROG} 正在运行，pid = ${pid}"
  fi
  echo ""
 
}
restart() {
  stop
 
  sleep 2
  echo "停止完成，准备启动"
  start
}
action() {
  case $1 in
  "help")
    printf "%s\\n" "$USAGE"
    ;;
  "start")
    start
    ;;
  "restart")
    restart
    ;;
  "stop")
    stop
    ;;
  "stopf")
    stopf
    ;;
  "status")
    status
    ;;
  *)
    echo "输入错误，请重新输入"
    exit
    ;;
  esac
}
action $@