#codegen #generation #bindings #api-bindings #object #api-token #zenkit

app zenkit-codegen

从用户定义的工作空间模式生成 Zenkit ORM 客户端

7 个版本

0.5.4 2021 年 4 月 14 日
0.5.3 2021 年 2 月 16 日
0.5.2 2021 年 1 月 27 日
0.3.1 2020 年 12 月 8 日

#2495开发工具

MIT/Apache

82KB
2K SLoC

根据用户定义的工作空间模式生成 Zenkit ORM 客户端库。

该程序的输出是一个新的库包,可以导入 Rust 应用程序中,或编译成 WASM。

大大简化了编写可靠的 Zenkit Rust 客户端,可以显著减少(超过 50%)与 Zenkit 交互所需的代码量,并通过利用 Rust 的编译时语法和类型验证来提高代码可靠性,确保业务对象的类型安全使用。

据我所知,这是唯一一个可以在编译时而不是在运行时检测模式相关代码错误的 Zenkit 客户端库。如果 Zenkit 工作空间 "模式" 发生变化,例如,通过更改字段名称或更改字段类型从整数到文本,运行 zk-codegen 并重新编译客户端应用程序将导致编译器标记出任何依赖于旧字段定义的应用程序依赖项。

用法

使用 cargo install zenkit-codegen 安装。程序名称为 zk-codegen

设置环境变量 ZENKIT_API_TOKEN 为您的 api 令牌,您可以从 zenkit.com 的账户配置文件中获取。

# Generate source code
# Parameters are -o output_dir (will be created if it doesn't exist)
#                -w workspace_name
zk-codegen -o my-lib -w "My Workspace"

# The command above generates output_dir/Cargo.toml and
# output_dir/src/*.rs. The crate should build as-is
cd output_dir
cargo build

在后续运行中,src/ 中的任何文件都将被覆盖,以反映 zk-codegen 运行时的当前模式,但为了避免覆盖对 Cargo.toml 的手动更新,该文件的新版本将保存为 Cargo.toml.gen

如果在代码生成或编译过程中遇到任何错误,则该错误是此包中的错误。请提交 github 问题。

示例

examples 目录中包含一些示例程序,这些程序使用了 Zenkit 工作空间模板。

依赖项

~12–28MB
~400K SLoC