模板拓展
cwgo 工具也支持传递自己的模板,模版语法为 go template 的语法。cwgo 也欢迎用户贡献自己的模板。由于 RPC 和 HTTP 概念不同,其对应的模版变量也有一些差异,详细请参考下文。
如需传递自定义模板,请给命令添加 -template
参数,如:
模板读取
cwgo 支持从本地或 git 中读取模板。其中 git 支持 https 或 ssh 的形式,-template
指定模板路径,-branch
指定模板分支(默认为主分支)。
RPC Server、Client, HTTP Server、Client 均支持模板拓展,具体用法见下文。
本地
git https
git ssh
RPC
-
模板文件通过包含 yaml 文件的文件夹传递,该文件夹下的所有 yaml 文件都会被渲染,模版解析失败会直接退出。请注意是否存在未知的隐藏文件。
Yaml 文件定义如下:
-
extensions.yaml
为特定文件,该文件的内容为扩展 Service 代码的配置文件。请注意文件命名冲突问题。 -
模板使用的数据为 PackageInfo,认为这部分内包含所有的元数据,如 methodInfo 等,用户只需要传递模板文件即可,模板内的数据为 PackageInfo 数据。PackageInfo 内常用的内容见附录。
-
cwgo 支持根据 methodInfo 循环渲染文件。循环渲染时的 methodInfo list 内只有一个元素,为当前正在渲染的 method。
-
更新时,目前支持覆盖、跳过和根据 methods 增加文件三种,支持在一个文件当中 append。如果开启了循环渲染文件,则只支持 skip 和 cover。
最佳实践的 rpc 示例 tpl 可参考这里。
HTTP
- 模版文件通过 yaml 文件夹传递,但是与 RPC 的 layout 不同的是 HTTP 的 layout 是基于 hertz 的自定义模版实现的,这里我们需要指定的 yaml 文件名需要固定为
layout.yaml
与package.yaml
,对于自定义模版的使用可以参考 Hz 自定义模版使用文档。
最佳实践的 http 示例 tpl 可参考这里。
附录
Kitex PackageInfo 结构体含义
最后修改
January 14, 2025
: Update release-v0_12_0.md (#1205) (bd11c02)