#!/bin/bash

export DBG_STATS=1
export DBG_PATH=1

PROG=/usr/local/bin/mp-speeder/mp-sdk
GUARD=/usr/local/bin/mp-speeder/mp_guard.sh
PROG_SPEEDER=/usr/local/bin/mp-speeder/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 ""
  # 从配置文件读取 logDir，默认 /var/log
  LOG_CONFIG=/usr/local/etc/mp-speeder/log_config.json
  LOG_DIR=$(grep -o '"logDir"\s*:\s*"[^"]*"' ${LOG_CONFIG} 2>/dev/null | grep -o '"[^"]*"$' | tr -d '"')
  [ -z "${LOG_DIR}" ] && LOG_DIR="/var/log"
  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 $@