summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2019-12-20 20:46:17 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2019-12-21 10:23:00 +0100
commit1773d71d5b40f5a6a14edca417d2818607a499f1 (patch)
tree0b63843378c705b8c9f4b8f6d9f18db58315233d
parent8a58ebb311fd079f65068e7e37725e4d43f17ab5 (diff)
tpl: Add a warnf template func
Fixes #6628
-rw-r--r--docs/content/en/functions/errorf.md17
-rw-r--r--docs/data/docs.json16
-rw-r--r--tpl/fmt/fmt.go13
-rw-r--r--tpl/fmt/init.go6
4 files changed, 45 insertions, 7 deletions
diff --git a/docs/content/en/functions/errorf.md b/docs/content/en/functions/errorf.md
index 73c13da09..edc8e5755 100644
--- a/docs/content/en/functions/errorf.md
+++ b/docs/content/en/functions/errorf.md
@@ -1,7 +1,6 @@
---
-title: errorf
-linktitle: errorf
-description: Log ERROR and fail the build from the templates.
+title: errorf and warnf
+description: Log ERROR or WARNING from the templates.
date: 2017-09-30
publishdate: 2017-09-30
lastmod: 2017-09-30
@@ -18,12 +17,18 @@ deprecated: false
aliases: []
---
-`errorf` will evaluate a format string, then output the result to the ERROR log (and only once per error message to avoid flooding the log).
+`errorf` or `warnf` will evaluate a format string, then output the result to the ERROR or WARNING log (and only once per error message to avoid flooding the log).
-This will also cause the build to fail (the `hugo` command will `exit -1`).
+Any ERROR will also cause the build to fail (the `hugo` command will `exit -1`).
+
+Note that the WARNING will only be printed to the console.
```
{{ errorf "Failed to handle page %q" .Path }}
```
-Note that `errorf` supports all the formatting verbs of the [fmt](https://golang.org/pkg/fmt/) package.
+```
+{{ warnf "You should update the shortcodes in %q" .Path }}
+```
+
+Note that `errorf` and `warnf` support all the formatting verbs of the [fmt](https://golang.org/pkg/fmt/) package.
diff --git a/docs/data/docs.json b/docs/data/docs.json
index a4c79ab16..7cdf8a405 100644
--- a/docs/data/docs.json
+++ b/docs/data/docs.json
@@ -3053,6 +3053,22 @@
"works!\n"
]
]
+ },
+ "Warnf": {
+ "Description": "Warnf formats according to a format specifier and logs a WARNING.\nIt returns an empty string.",
+ "Args": [
+ "format",
+ "a"
+ ],
+ "Aliases": [
+ "warnf"
+ ],
+ "Examples": [
+ [
+ "{{ warnf \"%s.\" \"warning\" }}",
+ ""
+ ]
+ ]
}
},
"hugo": {
diff --git a/tpl/fmt/fmt.go b/tpl/fmt/fmt.go
index 8b24648cb..7e0258650 100644
--- a/tpl/fmt/fmt.go
+++ b/tpl/fmt/fmt.go
@@ -23,12 +23,16 @@ import (
// New returns a new instance of the fmt-namespaced template functions.
func New(d *deps.Deps) *Namespace {
- return &Namespace{helpers.NewDistinctLogger(d.Log.ERROR)}
+ return &Namespace{
+ errorLogger: helpers.NewDistinctLogger(d.Log.ERROR),
+ warnLogger: helpers.NewDistinctLogger(d.Log.WARN),
+ }
}
// Namespace provides template functions for the "fmt" namespace.
type Namespace struct {
errorLogger *helpers.DistinctLogger
+ warnLogger *helpers.DistinctLogger
}
// Print returns string representation of the passed arguments.
@@ -53,3 +57,10 @@ func (ns *Namespace) Errorf(format string, a ...interface{}) string {
ns.errorLogger.Printf(format, a...)
return _fmt.Sprintf(format, a...)
}
+
+// Warnf formats according to a format specifier and logs a WARNING.
+// It returns an empty string.
+func (ns *Namespace) Warnf(format string, a ...interface{}) string {
+ ns.warnLogger.Printf(format, a...)
+ return ""
+}
diff --git a/tpl/fmt/init.go b/tpl/fmt/init.go
index 117055801..14568b45a 100644
--- a/tpl/fmt/init.go
+++ b/tpl/fmt/init.go
@@ -57,6 +57,12 @@ func init() {
},
)
+ ns.AddMethodMapping(ctx.Warnf,
+ []string{"warnf"},
+ [][2]string{
+ {`{{ warnf "%s." "warning" }}`, ``},
+ },
+ )
return ns
}