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

@@ -15,6 +15,7 @@ package i18n
import (
"encoding/json"
"fmt"
"strings"
"github.com/gohugoio/hugo/common/paths"
@@ -30,7 +31,6 @@ import (
"github.com/gohugoio/hugo/deps"
"github.com/gohugoio/hugo/hugofs"
"github.com/gohugoio/hugo/source"
_errors "github.com/pkg/errors"
)
// TranslationProvider provides translation handling, i.e. loading
@@ -83,7 +83,7 @@ const artificialLangTagPrefix = "art-x-"
func addTranslationFile(bundle *i18n.Bundle, r source.File) error {
f, err := r.FileInfo().Meta().Open()
if err != nil {
return _errors.Wrapf(err, "failed to open translations file %q:", r.LogicalName())
return fmt.Errorf("failed to open translations file %q:: %w", r.LogicalName(), err)
}
b := helpers.ReaderToBytes(f)
@@ -96,7 +96,7 @@ func addTranslationFile(bundle *i18n.Bundle, r source.File) error {
try := artificialLangTagPrefix + lang
_, err = language.Parse(try)
if err != nil {
return _errors.Errorf("%q %s.", try, err)
return fmt.Errorf("%q: %s", try, err)
}
name = artificialLangTagPrefix + name
}
@@ -111,7 +111,7 @@ func addTranslationFile(bundle *i18n.Bundle, r source.File) error {
return nil
}
}
return errWithFileContext(_errors.Wrapf(err, "failed to load translations"), r)
return errWithFileContext(fmt.Errorf("failed to load translations: %w", err), r)
}
return nil
@@ -138,11 +138,6 @@ func errWithFileContext(inerr error, r source.File) error {
}
defer f.Close()
err, _ = herrors.WithFileContext(
inerr,
realFilename,
f,
herrors.SimpleLineMatcher)
return herrors.NewFileError(realFilename, inerr).UpdateContent(f, herrors.SimpleLineMatcher)
return err
}