我们正在使用 go-templates 创建 yaml。在它们中,我们有需要在特定缩进级别缩进的多行输出操作。我们可以使用 indent
函数,但它不会区别对待第一行,因此要求 Action 定义没有缩进级别。
例如:
foo:
bar:
baz:
{{ myYamlOutputtingAction | indent 6 }} # <-- notice 0 indent level
有没有一种方法可以将我的操作定义放在对模板上下文有意义的缩进级别?
最佳答案
更新:小枝2.13.0+
刚刚nindent
而不是 indent
. sprig library包括这个功能正是这个用例。
上面的代码可以写成:
foo:
bar:
baz:
{{ myYamlOutputtingAction | nindent 6 }}
之前小枝版本的旧答案
2.13.0
你可以改变这个:
foo:
bar:
baz:
{{ myYamlOutputtingAction | indent 6 }} # <-- notice 0 indent level
对此:
foo:
bar:
baz:
{{- "\n"}}{{ myYamlOutputtingAction | indent 6 }} # <-- properly indented with a little bit fluff
一点解释
这是通过确保遵循
{{- "\n"}}
的任何内容来实现的。有 0 个缩进。这意味着您可以交易一个黑客 {{- "\n"}}
在有意义的时候进行适当的缩进。我们通常认为这是值得的。
关于go-templates - 如何在任何缩进级别放置带有多行输出的 go-template 操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46066524/