Skip to content
Permalink
Browse files

tpl: Add a warnf template func

Fixes #6628
  • Loading branch information
bep committed Dec 20, 2019
1 parent 8a58ebb commit 1773d71d5b40f5a6a14edca417d2818607a499f1
Showing with 45 additions and 7 deletions.
  1. +11 −6 docs/content/en/functions/errorf.md
  2. +16 −0 docs/data/docs.json
  3. +12 −1 tpl/fmt/fmt.go
  4. +6 −0 tpl/fmt/init.go
@@ -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.
@@ -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": {
@@ -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 ""
}
@@ -57,6 +57,12 @@ func init() {
},
)

ns.AddMethodMapping(ctx.Warnf,
[]string{"warnf"},
[][2]string{
{`{{ warnf "%s." "warning" }}`, ``},
},
)
return ns
}

0 comments on commit 1773d71

Please sign in to comment.
You can’t perform that action at this time.