You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

164 lines
3.4 KiB
Bash

#!/usr/bin/env bash
# @author 郑宏伟
# @brief MACOS服务器启动脚本
____APP_START_CONF_NAME=".app.mac.cfg"
SCRIPT_PATH="$(cd "`dirname "$0"`" && pwd)"
FRAMEWORK_PATH="`dirname "${SCRIPT_PATH}"`" # .../framework
MISC_SCRIPTS_PATH="${SCRIPT_PATH}/misc_scripts" # .../misc_scripts
function _log()
{
echo "[Log] $@"
}
function EnvEnsure()
{
local os_type=`uname`
if [ $os_type != "Darwin" ];then
_log "illegal os: $os_type"
exit 1
fi
local cpu=`sysctl -n machdep.cpu.core_count`
export SKYNET_THREAD=`expr ${cpu} \* 2`
}
function Main()
{
ParseAgrs $@
CreateConfigFile ${____APP_START_CONF_NAME}
EnvEnsure
${FRAMEWORK_PATH}/skynet/skynet ${____APP_START_CONF_NAME} "${ARG_TYPE}-${ARG_PRO}-${ARG_ENV}"
}
function Help()
{
echo 'Usage:'
echo 'start_server.sh -p 应用项目 -e 应用环境 -t 应用类型 [-d DBCONF名]'
echo 'Options:'
echo ' -p 必需 应用项目'
echo ' 奥斯曼大帝国:boe'
echo ' 西部:ww'
echo ' -e 必需 应用环境'
echo ' 开发环境:dev'
echo ' 集成测试:sit'
echo ' 产品环境:pro'
echo ' -t 必需 应用类型'
echo ' 游戏服:gs'
echo ' 登录服:ls'
echo ' 全局服:ms'
echo ' WEB服:ws'
echo ' -d 可选 DBCONF名'
}
function ProjectAdapter()
{
case ${1} in
boe|ww) ARG_PRO="$OPTARG";;
?)
_log "未知[应用项目]参数"
exit 1
;;
esac
}
function EnvAdapter()
{
case ${1} in
dev|sit|pro) ARG_ENV="$OPTARG";;
?)
_log "未知[应用环境]参数"
exit 1
;;
esac
}
function TypeAdapter()
{
case ${1} in
ls)
ARG_TYPE="$OPTARG"
ARG_START_CONF=login/snconfig
;;
ms)
ARG_TYPE="$OPTARG"
ARG_START_CONF=global/snconfig
;;
ws)
ARG_TYPE="$OPTARG"
ARG_START_CONF=web/webconf
;;
gs|rw|cp)
ARG_TYPE="$OPTARG"
ARG_START_CONF=game/snconfig
;;
?)
_log "未知[应用类型]参数"
exit 1
;;
esac
}
function ParseAgrs()
{
while getopts :p:e:t:hd: OPT
do
case $OPT in
p) ProjectAdapter $OPTARG;;
e) EnvAdapter $OPTARG;;
t) TypeAdapter $OPTARG;;
d) DBCONF_NAME="$OPTARG";;
h) Help;exit 0;;
?)
_log "未知参数"
exit 1
;;
esac
done
}
function auto_update_db()
{
local dbconf="dbconf"
if [[ ! -z ${DBCONF_NAME} ]]; then
dbconf="${DBCONF_NAME}"
fi
if [[ -z ${dbconf} ]]; then
_log "dbconf name err"
exit 1
fi
if [[ ${ARG_ENV} == "dev" && ${ARG_TYPE} == "ms" ]]; then
sh ${MISC_SCRIPTS_PATH}/mac_logic_updatedb.sh ${dbconf}
fi
}
function CreateConfigFile()
{
local STARTFILE=${1}
if [[ -z ${ARG_PRO} || -z ${ARG_ENV} || -z ${ARG_TYPE} ]]; then
_log "缺少参数";exit 2;
fi
rm -rf ${STARTFILE}
cat >> ./${STARTFILE} << EOF
include "framework/snconfig"
include "${ARG_START_CONF}"
app_type="${ARG_TYPE}"
app_project="${ARG_PRO}"
app_env="${ARG_ENV}"
EOF
if [[ ! -z ${DBCONF_NAME} ]]; then
echo "dbconf=\"${DBCONF_NAME}\"" >> ./${STARTFILE}
fi
# 自动更新数据库文件
auto_update_db
}
Main $@