diff options
author | Leszek CimaĆa <ernierasta@zori.cz> | 2020-01-08 21:44:18 +0100 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2020-01-09 14:31:19 -0500 |
commit | bf0f72a533d5c1868b9819f769836ea22d5fa583 (patch) | |
tree | d120574b57481fd5700c1ce3c12ad4a08bbeef4d /lib | |
parent | fe9ec67eca201c75c09f1ef7ff51ac189de3a4d4 (diff) |
template: add exec and wrap
Diffstat (limited to 'lib')
-rw-r--r-- | lib/templates/template.go | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/templates/template.go b/lib/templates/template.go index 5402472..f2765e8 100644 --- a/lib/templates/template.go +++ b/lib/templates/template.go @@ -5,6 +5,7 @@ import ( "errors" "net/mail" "os" + "os/exec" "path" "strings" "text/template" @@ -72,6 +73,11 @@ func parseAddressList(list string) []*mail.Address { return addrs } +// wrap allows to chain wrapText +func wrap(lineWidth int, text string) string { + return wrapText(text, lineWidth) +} + func wrapLine(text string, lineWidth int) string { words := strings.Fields(text) if len(words) == 0 { @@ -135,10 +141,27 @@ func quote(text string) string { return quoted.String() } +// cmd allow to parse reply by shell command +// text have to be passed by cmd param +// if there is error, original string is returned +func cmd(cmd, text string) string { + var out bytes.Buffer + c := exec.Command("sh", "-c", cmd) + c.Stdin = strings.NewReader(text) + c.Stdout = &out + err := c.Run() + if err != nil { + return text + } + return out.String() +} + var templateFuncs = template.FuncMap{ "quote": quote, "wrapText": wrapText, + "wrap": wrap, "dateFormat": time.Time.Format, + "exec": cmd, } func findTemplate(templateName string, templateDirs []string) (string, error) { |