{{/* vim: set filetype=mustache: */}} {{/* Merge one or more YAML templates and output the result. This takes an list of values: - the top context - [optional] zero or more template args - [optional] the template name of the overrides (destination) - the template name of the base (source) */}} {{- define "common.utils.merge" -}} {{- $top := first . }} {{- $tplName := last . }} {{- $args := initial . }} {{- if typeIs "string" (last $args) }} {{- $overridesName := last $args }} {{- $args = initial $args }} {{- $tpl := fromYaml (include $tplName $args) | default (dict) }} {{- $overrides := fromYaml (include $overridesName $args) | default (dict) }} {{- toYaml (merge $overrides $tpl) }} {{- else }} {{- include $tplName $args }} {{- end }} {{- end }}