rebar3 服务器
This commit is contained in:
@@ -0,0 +1,227 @@
|
||||
#!/usr/bin/env bash
|
||||
#-------------------------------------------------
|
||||
# 工具包主脚本
|
||||
# @author lwt
|
||||
#-------------------------------------------------
|
||||
|
||||
# 检查是否在cygwin中
|
||||
in_cygwin(){
|
||||
local os=$(uname)
|
||||
if [[ "${os:0:3}" == "CYG" ]]; then
|
||||
echo "1"
|
||||
else
|
||||
echo "0"
|
||||
fi
|
||||
}
|
||||
|
||||
# 检查某个函数是否已经定义
|
||||
is_fun_exists(){
|
||||
declare -F "$1" > /dev/null; return $?
|
||||
}
|
||||
|
||||
# 检查某个命令是否存在h
|
||||
is_command_exists(){
|
||||
command -v $1 >/dev/null; return $?
|
||||
}
|
||||
|
||||
# 检查screen session是否存在
|
||||
is_screen_exists(){
|
||||
[[ $(screen -ls | grep "$1" | wc -l ) -gt 0 ]] ; return $?
|
||||
}
|
||||
|
||||
# 是否整数
|
||||
is_integer(){
|
||||
local re='^[0-9]+$'
|
||||
[[ $1 =~ $re ]]; return $?
|
||||
}
|
||||
|
||||
# 检查数组中是否存在某个元素
|
||||
# 参数1:数组
|
||||
# 参数2: 元素
|
||||
in_array(){
|
||||
declare -a haystack=("${!1}")
|
||||
local needle=${2}
|
||||
for v in ${haystack[@]}; do
|
||||
if [[ ${v} == ${needle} ]]; then
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
# 检查当前运行环境中是否存在tty
|
||||
has_tty(){
|
||||
[[ -t 1 ]]; return $?
|
||||
}
|
||||
|
||||
|
||||
|
||||
# 输出一条普通信息
|
||||
INFO(){
|
||||
echo -e "\e[92m=>\e[0;0m ${1}"
|
||||
}
|
||||
|
||||
# 输出一条普通信息
|
||||
FROMAT(){
|
||||
echo -e "\e[92m \e[0;0m ${1}"
|
||||
}
|
||||
|
||||
# 输出一条错误信息
|
||||
ERR(){
|
||||
>&2 echo -e "\e[91m>> ${1}\e[0;0m"
|
||||
}
|
||||
|
||||
# 打印信息
|
||||
OPT() {
|
||||
echo -e "[操作] $(date '+%Y-%m-%d %H:%M:%S') $@"
|
||||
}
|
||||
|
||||
CMD() {
|
||||
echo -e "[指令] $(date '+%Y-%m-%d %H:%M:%S') $@"
|
||||
}
|
||||
|
||||
|
||||
|
||||
# 检查锁
|
||||
lock_check(){
|
||||
local task=$1
|
||||
lock=/tmp/server_lock_${task}.lock
|
||||
if [ -f $lock ]; then
|
||||
taskname=$(<$lock)
|
||||
ERR "正在执行\"$taskname\"任务,需要等待该任务完成..."
|
||||
ERR "如无任务执行,自行删除${lock}文件"
|
||||
exit 1
|
||||
fi
|
||||
touch $lock # 加锁
|
||||
echo $task > $lock
|
||||
}
|
||||
|
||||
# 解锁
|
||||
lock_release(){
|
||||
local task=$1
|
||||
lock=/tmp/server_lock_${task}.lock
|
||||
rm -f $lock
|
||||
}
|
||||
|
||||
# 调用函数
|
||||
_CALL_FUNCTION(){
|
||||
resolve_arg $@
|
||||
if is_fun_exists ${FUN_NAME}; then
|
||||
check_arg
|
||||
${FUN_NAME} $ARGS
|
||||
exit 0
|
||||
fi
|
||||
help
|
||||
}
|
||||
|
||||
|
||||
# 解析参数
|
||||
resolve_arg(){
|
||||
FUN_NAME="fun_${1}"
|
||||
shift
|
||||
while [ $# -ne 0 ] ; do
|
||||
PARAM=$1
|
||||
shift
|
||||
case $PARAM in
|
||||
--) break ;;
|
||||
--server|-s) SERVER_TYPE=$1; shift ;;
|
||||
--alias|-a) ALIAS=$1; shift ;;
|
||||
--server_id|-si) SERVER_ID=$1; shift ;;
|
||||
--db_host|-dbh) DB_HOST=$1; shift;;
|
||||
*) ARGS="$ARGS $PARAM" ;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
# 检测参数
|
||||
check_arg(){
|
||||
if [ "${ALIAS}" = "" ]; then
|
||||
ALIAS=${DEF_ALIAS}
|
||||
fi
|
||||
if [ "${SERVER_TYPE}" = "" ]; then
|
||||
SERVER_TYPE=${DEF_SERVER}
|
||||
fi
|
||||
if [ "${SERVER_ID}" = "" ]; then
|
||||
SERVER_ID=${DEF_SERVER_ID}
|
||||
fi
|
||||
if [ "${DB_HOST}" = "" ]; then
|
||||
DB_HOST=${DB_HOST}
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
help(){
|
||||
INFO "当前路径:${ROOT}"
|
||||
INFO "用法:"
|
||||
INFO "指令 [参数]"
|
||||
INFO "参数:"
|
||||
INFO " -si, --server_id 服务器id 推送的版本"
|
||||
INFO " -a, --alias 别名"
|
||||
INFO " -s, --server game_server|login_server 服务器类型"
|
||||
action
|
||||
INFO "未传参数则取默认参数:可以config.sh修改"
|
||||
INFO "是否查看默认参数(y/n):"
|
||||
read IS
|
||||
if [ ${IS} == y ]; then
|
||||
INFO "默认参数:`cat ./shell/config.sh`"
|
||||
fi
|
||||
}
|
||||
|
||||
action(){
|
||||
INFO "指令列表:"
|
||||
for k in ${!DOC[@]}; do
|
||||
>&2 echo -e -n "\e[95m${k}\e[0;0m"
|
||||
eval "printf ' %.0s' {1..$((26 - ${#k}))}"
|
||||
>&2 echo -e "${DOC[$k]}"
|
||||
done
|
||||
}
|
||||
|
||||
# 输出命令行不全信息
|
||||
fun_completion(){
|
||||
echo $(declare -p DOC)
|
||||
}
|
||||
|
||||
|
||||
|
||||
# --- 执行入口 -----------------------------------------------------
|
||||
declare -A DOC
|
||||
export ROOT=$(dirname $(dirname "$PWD"))
|
||||
|
||||
# 加载配置文件
|
||||
source ${ROOT}/server/server/shell/config.sh
|
||||
|
||||
|
||||
|
||||
# 载入子仓库中的工具脚本
|
||||
scripts=("server/server/shell/gen.sh" "server/server/shell/sql.sh" "server/server/shell/srv.sh" "server/server/shell/svn.sh")
|
||||
for f in ${scripts[@]}; do
|
||||
if [ ! -f ${ROOT}/${f} ]; then
|
||||
continue
|
||||
fi
|
||||
source ${ROOT}/${f}
|
||||
done
|
||||
|
||||
# 根据参数调用相应的命令
|
||||
_CALL_FUNCTION $@
|
||||
|
||||
|
||||
|
||||
#declare -A DOC
|
||||
#FilePath=$(dirname $(readlink -f "$0"))
|
||||
#ROOT=$(dirname "${FilePath}")
|
||||
#
|
||||
## 加载配置文件
|
||||
#source ${ROOT}/shell/config.sh
|
||||
#
|
||||
#
|
||||
## 载入子仓库中的工具脚本
|
||||
#scripts=("shell/gen.sh" "shell/sql.sh" "shell/srv.sh" "shell/svn.sh")
|
||||
#for f in ${scripts[@]}; do
|
||||
# if [ ! -f ${ROOT}/${f} ]; then
|
||||
# continue
|
||||
# fi
|
||||
# source ${ROOT}/${f}
|
||||
#done
|
||||
#
|
||||
## 根据参数调用相应的命令
|
||||
#_CALL_FUNCTION $@
|
||||
Reference in New Issue
Block a user