简单说明
- 先参考 开发 rebar3 escript 项目,了解escript是什么和怎么用 rebar3 的escript项目来开发脚本。
- 浏览本文,了解 es_game 是干什么的,然后根据每个目录模块的职责去看代码,根据需要自己做扩展。
es_game 项目 github地址
作用
方便脚本交互,方便运维管理,用脚本控制game服务,启动服务,停止服务,节点链入(故障排查),获取服务信息等。
主要模块职责
node/es_node_cfg.erl
配置获取,注意配置的文件位置
node/es_node_cmd_builder.erl
脚本指令字符串拼接
node/es_node_item.erl
节点信息封装
node/es_node_rpc.erl
节点rpc调用封装
node/es_node_tool.erl
节点控制函数封装
utils/es_utils_exec
和系统交互的工具模块
utils/es_utils_map
操控map的工具模块
es_game.erl
main入口函数和指令分发
调用 es_node_tool 完成 节点控制
扩展新功能
-
先跑 es_game_test:test(),确认新增指令的正确性。
-
添加到 es_game进行分发。
-
生成脚本
$ rebar3 escriptize 生成脚本:_build/bin/es_game -
替换game下的es脚本
替换 game/scripts/es/es_game
-
编写脚本封装escript新增的接口调用
linux game/scripts/linux/game.sh win game/scripts/win/game.bat
脚本调用
$ cd game/scripts/win/
$ game.bat start
$ game.bat attach
$ game.bat stop