// Package template рендерит шаблоны файлов (аналог модуля `template` из // Ansible) через стандартный text/template с добавленными функциями // sprig — свой парсер, а не сторонняя реализация Jinja2, чтобы не зависеть // от чужой грамматики. package template import ( "strings" "text/template" "github.com/Masterminds/sprig/v3" ) // Render рендерит src (содержимое шаблона) с переменными vars. // name используется только для сообщений об ошибках парсинга. func Render(name, src string, vars map[string]interface{}) (string, error) { tmpl, err := template.New(name). Funcs(sprig.FuncMap()). Funcs(CustomFuncs()). Option("missingkey=error"). // опечатка в имени переменной — ошибка, а не пустая строка Parse(src) if err != nil { return "", err } var buf strings.Builder if err := tmpl.Execute(&buf, vars); err != nil { return "", err } return buf.String(), nil }