如何在三元语句中连接变量



我正在尝试这样做:

name: {{ $value.enable | ternary $value.prefix $.Release.Namespace $value.suffix $value.override }}

但这种语法是错误的。我找不到任何例子来说明如何将这些变量连接在一起:$value.prefix $.Release.Namespace $value.suffix

编辑

我想我可以使用这样的打印:

name: {{ true | ternary (print $value.prefix $.Release.Namespace $value.suffix) $value.fullnameOverride }}

但是,如果您不指定其中一个字段,它将打印<nil>,而不是不打印任何我想要的内容。

Helm包含Sprig模板库,其中包含许多有用的可组合部件。

对于";真";一半,你有三个组成部分;你希望他们结合在一起;但你不希望任何部分被移除。Spriglist函数从任意项目构建一个列表;compact获取一个列表并返回一个没有空项的新列表(空字符串或nil,任何Go零值(;然后CCD_ 5将该列表组合成单个字符串。您可以将其分配给一个临时变量,并在ternary调用中使用:

{{- $qualifiedName := list $value.prefix $.Release.Namespace $value.suffix | compact | join "" }}
name: {{ $value.enable | ternary $qualifiedName $value.fullnameOverride }}

我发现ternary语法有点难以阅读(即使它与C风格的expr ? t : f语法匹配(,在这种情况下也没有必要。一个详细说明这一点的助手模板以后可能更容易理解。

{{-/* Generate the name of the thing.  Call with a list containing
the top-level Helm object and an item from the values file.
(Indented for readability, the template engine removes all of
the whitespace.) */-}}
{{- define "name" -}}
{{- $top := index . 0 -}}
{{- $value := index . 1 -}}
{{- if $value.enable -}}
{{- with $value.prefix -}}{{- . -}}{{- end -}}
{{- with $top.Release.Namespace -}}{{- . -}}{{- end -}}
{{- with $value.suffix -}}{{- . -}}{{- end -}}
{{- else -}}
{{- $value.fullnameOverride -}}
{{- end -}}
{{- end -}}
name: {{ include "name" (list $ .) }}

最新更新