Files
fc/server/tools/tools.sh
T
2026-05-23 22:10:14 +08:00

150 lines
4.4 KiB
Bash

#!/usr/bin/env bash
#-------------------------------------------------
# 公共开发工具
# @author yeahoo2000@gmail.com
#-------------------------------------------------
if [ "" == "$ROOT" ]; then
echo -e "\e[91m>>\e[0;0m 此脚本必须通过tools/dev.sh调用才能正常工作"
exit 1
fi
# 生成配置文件模板
DOC[gen_cfg]="生成配置文件模板"
fun_gen_cfg(){
local file=$ROOT/tools/cfg.ini
if [ -f $file ]; then
read -p " [93m=> 配置文件已经存在,是否生成新文件并覆盖它?[0;0m[y/n]" choice
if [[ $choice != "y" ]]; then
exit 0
fi
fi
cat > $file <<EOF
[default]
;=== 公共配置 ==========================================
; 模块作者标志
AUTHOR=xxxx@xxx.xxx
; 游戏代号
GAME_CODE=zsyz
;=== 服务端配置(如不需要,无需理会) ==========================
; 域名
HOST=local.dev
; erl执行程序所在路径
; ERL="/cygdrive/c/Program Files/erl6.4/bin/erl"
; WERL="/cygdrive/c/Program Files/erl6.4/bin/werl"
ERL=erl
WERL=werl
; erlang节点通讯cookie
ERL_COOKIE=k35bz75vc881x
; erl节点间连接端口范围
ERL_PORT_MIN=40001
; erl节点间连接端口范围
ERL_PORT_MAX=44000
; erl文件编译参数
; ERL_MAKE_PARAM="{d, dbg_tester}, {d, debug}, {d, disable_auth}, {d, enable_gm_cmd}"
ERL_MAKE_PARAM="{d, disable_auth}, {d, enable_gm_cmd}"
; 游戏节点对外端口偏移,例:如果设为8000,区号为10的节点端口为8000+10
PORT_OFFSET=9000
; 数据库配置
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASS=123456
; oms数据库名
OMS_DB_HOST="127.0.0.1"
OMS_DB_PORT=3306
OMS_DB_USER=root
OMS_DB_PASS=asdf
OMS_DB_NAME="oms"
; 产品ID
PRODUCT_ID=1
; 如果在cygwin下工作请设置以下两个变量
; ROOT=d:/zsyz.dev
; ZONE_BASE=d:/zsyz.dev/zone
; cocos_creator=/Applications/CocosCreator.app/Contents/MacOS/CocosCreator
EOF
INFO "已经生成配置文件: $file"
}
DOC[pull]="更新所有的源码仓库"
fun_pull(){
for v in ${ROOT}/$1*; do
if [ -d $v/.git ]; then
echo ---------------------------------------------
INFO "正在更新源码库: \e[92m$(basename $v)\e[0;0m($(cd $v&&git describe --contains --all HEAD))"
echo ---------------------------------------------
cd $v && git pull
elif [ -d $v/.svn ]; then
echo ---------------------------------------------
INFO "正在更新源码库: \e[92m$(basename $v)\e[0;0m"
echo ---------------------------------------------
cd $v && svn update
fi
done
}
DOC[status]="查看所有源码仓库的状态信息"
fun_status(){
for v in ${ROOT}/*; do
if [ -d $v/.git ]; then
echo ---------------------------------------------
INFO "源码库\e[92m$(basename $v)\e[0;0m的状态信息:"
echo ---------------------------------------------
cd $v && git status
elif [ -d $v/.svn ]; then
echo ---------------------------------------------
INFO "源码库\e[92m$(basename $v)\e[0;0m的状态信息:"
echo ---------------------------------------------
cd $v && svn info
fi
done
}
DOC[gen_proto]="生成协议相关文件"
fun_gen_proto(){
INFO "正在生成协议相关文件..."
home=${ROOT}/tools/gen_proto
# 处理服务端生成
if [ -d ${ROOT}/server ]; then
if [ ! -d $home ]; then
ERR "协议配置目录不存在"
fi
cd ${home}
mkdir -p ebin
mkdir -p ${home}/cli ${ROOT}/server/src/proto
$ERL -noshell -pa "${ROOT}/tools/ebin" -pa "./ebin" -eval "make:all()" -eval "gen_proto:compile(all)" -s c q
fi
if [ -d ${ROOT}/data/lua ]; then
INFO "data_protocol.lua 更新成功"
cp -f ${ROOT}/tools/gen_proto/cli/data_protocol.lua ${ROOT}/data/lua
fi
}
DOC[gen_map]="生成地图数据文件"
fun_gen_map(){
INFO "正在生成地图数据文件..."
fun_gen_data map_data
}
DOC[replace]="指定目录关键词替换"
fun_replace(){
dir=$ROOT/$1
if [ ! -d $dir ]; then
echo "目录不存在"
exit
fi
s=$(check_empty "请输入需要替换的关键词" $2)
t=$(check_empty "请输入替换后的目标关键词" $3)
INFO "正在替换目录[$dir]...[$s]=>[$t]"
cd $dir
find . -type f|xargs sed -i '' "s/$s/$t/g"
}
fun_git_diff(){
echo "git diff $2 $3"
cd $1 && git diff $2 $3
}