mirror of
https://github.com/adnanh/webhook.git
synced 2025-10-06 22:47:21 +00:00
feat: allow override of template delims
When you want to use "source":"template" arguments inside your hook file but also parse the hook file itself as a template, it is necessary use different delimiters on the two template parsers to avoid having to pepper all the inner templates with constructs like {{"{{"}}. Added an extra command line argument -template-delims that expects a comma-separated pair of delimiters like '[[,]]' that will be used when parsing the whole hooks file template. Inner templates in an Argument always use the default double-brace style.
This commit is contained in:
parent
9892bc678b
commit
bb8be5ed9a
3 changed files with 13 additions and 6 deletions
|
@ -818,7 +818,9 @@ type Hooks []Hook
|
|||
// LoadFromFile attempts to load hooks from the specified file, which
|
||||
// can be either JSON or YAML. The asTemplate parameter causes the file
|
||||
// contents to be parsed as a Go text/template prior to unmarshalling.
|
||||
func (h *Hooks) LoadFromFile(path string, asTemplate bool) error {
|
||||
// The delimsStr parameter is a comma-separated pair of the left and right
|
||||
// template delimiters, or an empty string to use the default '{{,}}'.
|
||||
func (h *Hooks) LoadFromFile(path string, asTemplate bool, delimsStr string) error {
|
||||
if path == "" {
|
||||
return nil
|
||||
}
|
||||
|
@ -832,8 +834,12 @@ func (h *Hooks) LoadFromFile(path string, asTemplate bool) error {
|
|||
|
||||
if asTemplate {
|
||||
funcMap := template.FuncMap{"getenv": getenv}
|
||||
left, right, found := strings.Cut(delimsStr, ",")
|
||||
if !found && delimsStr != "" {
|
||||
return fmt.Errorf("invalid delimiters %q - should be left and right delimiters separated by a comma", delimsStr)
|
||||
}
|
||||
|
||||
tmpl, err := template.New("hooks").Funcs(funcMap).Parse(string(file))
|
||||
tmpl, err := template.New("hooks").Funcs(funcMap).Delims(strings.TrimSpace(left), strings.TrimSpace(right)).Parse(string(file))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue