小编MFr*_*anc的帖子

Gomplate : 坏字符 U+0022 '-'

我正在尝试gomplate并遇到错误。

对于上下文,我定义了一个模板文件 test.tmplt 和一个数据源文件 dev.yaml。
test.tmplt 具有以下内容:

localAPIEndpoint:
    advertiseAddress: {{ (datasource "k8s").api-advertise-ip }}
Run Code Online (Sandbox Code Playgroud)

而 dev.yaml 包含以下内容:

api-advertise-ip: 192.168.0.1
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用 gomplate 填写 test.tmplt 的内容,如下所示:

gomplate -d k8s=./dev.yaml -f ./test.tmplt -o test.conf
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

09:42:44 FTL  error="template: ./test.tmplt:2: bad character U+002D '-'"
Run Code Online (Sandbox Code Playgroud)

在我看来,它不喜欢模板文件中的“-”符号。有解决方法吗?这是预期的行为吗?

编辑 1:感谢@icza 提供的答案对于上面的示例正确有效。然而,如果我修改 yaml 文件以包含嵌套字段,它似乎就会崩溃。
例如

开发.yaml:

kubernetes:
    api-advertise-ip: 192.168.0.0
Run Code Online (Sandbox Code Playgroud)

测试.tmplt:

localAPIEndpoint:
    advertiseAddress: {{ index (datasource "k8s") "kubernetes.api-advertise-ip" }}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,输出:

gomplate -d k8s=./dev.yaml -f ./test.tmplt -o test.conf
Run Code Online (Sandbox Code Playgroud)

是 :

localAPIEndpoint:
    advertiseAddress: <no value>
Run Code Online (Sandbox Code Playgroud)

yaml go gomplate

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

go ×1

gomplate ×1

yaml ×1