ref: 1773d71d5b40f5a6a14edca417d2818607a499f1
parent: 8a58ebb311fd079f65068e7e37725e4d43f17ab5
author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
date: Fri Dec 20 15:46:17 EST 2019
tpl: Add a warnf template func Fixes #6628
--- 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 @@
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.
--- 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": {
--- a/tpl/fmt/fmt.go
+++ b/tpl/fmt/fmt.go
@@ -23,12 +23,16 @@
// 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.
@@ -52,4 +56,11 @@
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 ""
}
--- a/tpl/fmt/init.go
+++ b/tpl/fmt/init.go
@@ -57,6 +57,12 @@
},
)
+ ns.AddMethodMapping(ctx.Warnf,
+ []string{"warnf"},
+ [][2]string{
+ {`{{ warnf "%s." "warning" }}`, ``},
+ },
+ )
return ns
}