Improve error messages, esp. when the server is running

* Add file context to minifier errors when publishing
* Misc fixes (see issues)
* Allow custom server error template in layouts/server/error.html

To get to this, this commit also cleans up and simplifies the code surrounding errors and files. This also removes the usage of `github.com/pkg/errors`, mostly because of https://github.com/pkg/errors/issues/223 -- but also because most of this is now built-in to Go.

Fixes #9852
Fixes #9857
Fixes #9863
This commit is contained in:
Bjørn Erik Pedersen
2022-05-02 16:07:52 +02:00
parent 6eea32bd6b
commit f2946da9e8
109 changed files with 861 additions and 780 deletions

View File

@@ -16,8 +16,11 @@ package transform
import (
"bytes"
"io"
"io/ioutil"
bp "github.com/gohugoio/hugo/bufferpool"
"github.com/gohugoio/hugo/common/herrors"
"github.com/gohugoio/hugo/hugofs"
)
// Transformer is the func that needs to be implemented by a transformation step.
@@ -103,7 +106,17 @@ func (c *Chain) Apply(to io.Writer, from io.Reader) error {
}
if err := tr(fb); err != nil {
return err
// Write output to a temp file so it can be read by the user for trouble shooting.
filename := "output.html"
tempfile, ferr := ioutil.TempFile("", "hugo-transform-error")
if ferr == nil {
filename = tempfile.Name()
defer tempfile.Close()
_, _ = io.Copy(tempfile, fb.from)
return herrors.NewFileErrorFromFile(err, filename, filename, hugofs.Os, nil)
}
return herrors.NewFileError(filename, err).UpdateContent(fb.from, nil)
}
}