aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorLeszek CimaƂa <ernierasta@zori.cz>2020-01-08 21:44:18 +0100
committerDrew DeVault <sir@cmpwn.com>2020-01-09 14:31:19 -0500
commitbf0f72a533d5c1868b9819f769836ea22d5fa583 (patch)
treed120574b57481fd5700c1ce3c12ad4a08bbeef4d /lib
parentfe9ec67eca201c75c09f1ef7ff51ac189de3a4d4 (diff)
downloadaerc-bf0f72a533d5c1868b9819f769836ea22d5fa583.tar.gz
template: add exec and wrap
Diffstat (limited to 'lib')
-rw-r--r--lib/templates/template.go23
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/templates/template.go b/lib/templates/template.go
index 54024720..f2765e87 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) {