跳到主要内容

gdk

简介

gdk基础接口

配置选项

  • gbk_version 指定gbk版本。(TODO:暂未使用)
  • name 项目名称。最终生成的二进制包命名为(name).zip
  • package_dir package.json所在目录。
  • include 将其他目录包含到模块构建环境。
  • archive 归档列表。
  • modules 项目模块集合。每个模块对应一个可运行的程序。
  • module.path 模块路径。
  • module.entry 模块程序入口脚本。
  • module.macro_files 依赖的宏文件列表。(TODO:想办法去掉)
  • module.include 将其他目录包含到模块构建环境。
  • module.archive 归档列表。根据该配置选项生成模块包。(TODO:把ignore规则也直接添加到这里面,定义一套和.gitignore相反的机制)
  • module.output_dir 打包输出目录。
  • module.extra_args 附加参数。可以通过platform和run_mode字段设置作用范围。

组件接口

gdk.gs

函数原型函数作用
void premake(map project_conf, string project_path, bool with_container = false)根据项目配置生成pmake文件
void make(map project_conf, string project_path)构建项目(即将废弃,不推荐使用,请使用命令行接口)
void run_module_debug(map project_conf, string os_work_dir, string module_name)执行指定模块

ContainerClient.gs

GS服务器部署后台接口

函数原型函数作用
bool login(string host, int port)登录GS服务器部署后台
mixed upload_driver(string platform, string version, buffer driver_buff)上传driver
mixed upload_image(string image_name, buffer image_buff, bool force_update = false)上传服务器包(镜像)
mixed deploy_image(string image_name)以默认配置部署服务器

样例

public void sample()
{
// 读取项目配置文件
map project_conf = json.parse(file.read_all(project_path + "GS-RTS.json"));

// 本地运行服务器
gdk.run_module_debug(project_conf, project_path, "server");

// 为项目生成pmake文件
gdk.premake(project_conf, project_path, /* with_container: */ true);

// 构建项目
gdk.make(project_conf, project_path);

object cli = new_object(ContainerClient);

// 登录GS服务器部署后台
assert(cli.login("localhost", 25129));

// 读取服务器包
buffer image_buff = file.read_all(project_path + "binpacks-release/GS-RTS.zip", "b");

// 上传服务器包(强制覆盖)
cli.upload_image("GS-RTS", image_buff, true);

map system_info = get_system_info();

// 读取driver文件
buffer driver_buff = nil;
if (system_info.os == "windows")
driver_buff = file.read_all("/gs/exec_path/gs.exe", "b");
else
driver_buff = file.read_all("/gs/exec_path/gs", "b");

// 上传driver
cli.upload_driver(system_info.os, system_info.version, driver_buff);

// 部署服务器
cli.deploy_image("GS-RTS");
}