跳到主要内容

pmake2

简介

提供使用gs代码编写打包脚本的接口以实现打包功能,效果类似gs内建的archive_builder

组件接口

pmake2.gs

函数原型函数作用
BuildContext new_builder(string name)创建一个打包工具实例
bool run(string name, function func)执行一次打包
void run_and_exit(string name, function func)执行一次打包并且退出进程(成功时进程返回值为0,失败为-1)

BuildContext

打包处理的工作环境类

成员变量

变量名类型初始值须初始化描述
namestringnil可选名字
add_filesmapnil可选添加的文件列表
ignore_filesmapnil可选忽略的文件列表
pack_filesmapnil可选archive pack files
添加到二进制包里的文件列表
output_pathstringnil可选mount point path
输出路径
root_dirstringnil可选real dir
根目录的系统路径(相对于当前工作路径)
output_dirstringnil可选输出目录的系统路径(相对于当前工作路径)
mount_pointsmapnil可选mount
挂载点词典
error_countint0可选error list
已发生的错误次数

成员方法

函数原型函数作用
void reset()重置打包工具
bool contains_error()打包工具是否有错误产生
bool check_ready()打包工具是否已经就绪
void set_name(string name)打包工具设置名字
void require_root(string real_dir)打包工具根路径设置
void set_output_dir(string real_dir, string output_path = "/@publish/output/")打包工具设置输出路径
void mount(string real_dir, string mount_point)打包工具挂载路径
void add_src(string pattern, string relative_path = nil)打包工具添加原始文件
void add_obj(string pattern, string relative_path = nil)打包工具编译并添加编译后文件
void ignore(string pattern)打包工具忽略文件
void boot_plist(...)打包工具写入/boot.plist
void outfile(string filename, mixed data)打包工具写入文件
void pack(string pack_filename)打包工具生成打包文件(.pak或者.zip)
void on_add_file(function func)响应添加文件成功的事件
void notify_add_file(...)私有函数,外部别用
void build_log(string fmt, ...)输出普通日志
void build_success(string fmt, ...)输出成功日志
void build_warning(string fmt, ...)输出警告日志
void build_error(string fmt, ...)输出错误日志
void log(string prefix, string color, string fmt, ...)输出自定义日志
array get_files(string pattern)获取匹配的所有文件列表
void drop_file(string pattern)移除匹配的所有文件
void drop_path(string pattern)移除匹配的所有文件和目录
void list_all(string pattern, function func)遍历所有匹配的文件或者路径
void list_file(string pattern, function func)遍历所有匹配的文件

样例

import pkg.pmake2;

pmake2.run("test", (BuildContext context) {
// 校验并设置root路径
context.require_root("./");

// 设置输出路径
context.set_output_dir("./test/output");

// 额外挂载
context.mount("./test/pack", "/@pack");

// 编译/添加文件
context.add_obj("/test/a/**");

// 生成boot plist
context.boot_plist("unpack", "/@root/config/**.json", "/@local/config/");
context.boot_plist("unpack", "/@root/etc/**.json", "/@local/etc/");
context.boot_plist("set", "pkg_path", "./pkg/");
context.boot_plist("run", "/main.gs");

// 生成打包文件
context.pack("/@pack/pak.zip");
});