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

@@ -23,7 +23,7 @@ import (
"github.com/spf13/cast"
"github.com/pkg/errors"
"errors"
"github.com/gohugoio/hugo/config"
)
@@ -72,7 +72,7 @@ func LoadLanguageSettings(cfg config.Provider, oldLangs Languages) (c LanguagesC
} else {
languages2, err = toSortedLanguages(cfg, languages)
if err != nil {
return c, errors.Wrap(err, "Failed to parse multilingual config")
return c, fmt.Errorf("Failed to parse multilingual config: %w", err)
}
}

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
}

View File

@@ -14,6 +14,7 @@
package langs
import (
"fmt"
"sort"
"strings"
"sync"
@@ -22,8 +23,6 @@ import (
"golang.org/x/text/collate"
"golang.org/x/text/language"
"github.com/pkg/errors"
"github.com/gohugoio/hugo/common/htime"
"github.com/gohugoio/hugo/common/maps"
"github.com/gohugoio/hugo/config"
@@ -311,7 +310,7 @@ func GetCollator(l *Language) *Collator {
func (l *Language) loadLocation(tzStr string) error {
location, err := time.LoadLocation(tzStr)
if err != nil {
return errors.Wrapf(err, "invalid timeZone for language %q", l.Lang)
return fmt.Errorf("invalid timeZone for language %q: %w", l.Lang, err)
}
l.location = location