From f2946da9e806c2bafbdd26707fe339db79bd980b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Mon, 2 May 2022 16:07:52 +0200 Subject: 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 --- hugofs/decorators.go | 5 ++--- hugofs/fileinfo.go | 2 +- hugofs/rootmapping_fs.go | 6 ++---- hugofs/slice_fs.go | 5 +++-- hugofs/walk.go | 8 ++++---- hugofs/walk_test.go | 2 +- 6 files changed, 13 insertions(+), 15 deletions(-) (limited to 'hugofs') diff --git a/hugofs/decorators.go b/hugofs/decorators.go index be0ae495d..3762d753b 100644 --- a/hugofs/decorators.go +++ b/hugofs/decorators.go @@ -14,12 +14,11 @@ package hugofs import ( + "fmt" "os" "path/filepath" "strings" - "github.com/pkg/errors" - "github.com/spf13/afero" ) @@ -232,7 +231,7 @@ func (l *baseFileDecoratorFile) Readdir(c int) (ofi []os.FileInfo, err error) { } fi, err = l.fs.decorate(fi, filename) if err != nil { - return nil, errors.Wrap(err, "decorate") + return nil, fmt.Errorf("decorate: %w", err) } fisp = append(fisp, fi) } diff --git a/hugofs/fileinfo.go b/hugofs/fileinfo.go index 29ac3c240..af37fce7e 100644 --- a/hugofs/fileinfo.go +++ b/hugofs/fileinfo.go @@ -28,7 +28,7 @@ import ( "github.com/gohugoio/hugo/hugofs/files" "golang.org/x/text/unicode/norm" - "github.com/pkg/errors" + "errors" "github.com/gohugoio/hugo/common/hreflect" diff --git a/hugofs/rootmapping_fs.go b/hugofs/rootmapping_fs.go index a891ba8de..90df48f8c 100644 --- a/hugofs/rootmapping_fs.go +++ b/hugofs/rootmapping_fs.go @@ -21,8 +21,6 @@ import ( "github.com/gohugoio/hugo/hugofs/files" - "github.com/pkg/errors" - radix "github.com/armon/go-radix" "github.com/spf13/afero" ) @@ -191,7 +189,7 @@ func (fs *RootMappingFs) Dirs(base string) ([]FileMetaInfo, error) { fs = decorateDirs(fs, r.Meta) fi, err := fs.Stat("") if err != nil { - return nil, errors.Wrap(err, "RootMappingFs.Dirs") + return nil, fmt.Errorf("RootMappingFs.Dirs: %w", err) } if !fi.IsDir() { @@ -560,7 +558,7 @@ func (fs *RootMappingFs) doLstat(name string) ([]FileMetaInfo, error) { if fileCount > 1 { // Not supported by this filesystem. - return nil, errors.Errorf("found multiple files with name %q, use .Readdir or the source filesystem directly", name) + return nil, fmt.Errorf("found multiple files with name %q, use .Readdir or the source filesystem directly", name) } return []FileMetaInfo{roots[0].fi}, nil diff --git a/hugofs/slice_fs.go b/hugofs/slice_fs.go index a9a3f1bbc..7edaf7513 100644 --- a/hugofs/slice_fs.go +++ b/hugofs/slice_fs.go @@ -14,11 +14,12 @@ package hugofs import ( + "fmt" "os" "syscall" "time" - "github.com/pkg/errors" + "errors" "github.com/spf13/afero" ) @@ -83,7 +84,7 @@ func (fs *SliceFs) LstatIfPossible(name string) (os.FileInfo, bool, error) { return decorateFileInfo(fi, fs, fs.getOpener(name), "", "", nil), false, nil } - return nil, false, errors.Errorf("lstat: files not supported: %q", name) + return nil, false, fmt.Errorf("lstat: files not supported: %q", name) } func (fs *SliceFs) Mkdir(n string, p os.FileMode) error { diff --git a/hugofs/walk.go b/hugofs/walk.go index 26f1b74e0..22a99402f 100644 --- a/hugofs/walk.go +++ b/hugofs/walk.go @@ -22,7 +22,7 @@ import ( "github.com/gohugoio/hugo/common/loggers" - "github.com/pkg/errors" + "errors" "github.com/spf13/afero" ) @@ -125,7 +125,7 @@ func (w *Walkway) Walk() error { if w.checkErr(w.root, err) { return nil } - return w.walkFn(w.root, nil, errors.Wrapf(err, "walk: %q", w.root)) + return w.walkFn(w.root, nil, fmt.Errorf("walk: %q: %w", w.root, err)) } fi = info.(FileMetaInfo) } @@ -192,7 +192,7 @@ func (w *Walkway) walk(path string, info FileMetaInfo, dirEntries []FileMetaInfo if w.checkErr(path, err) { return nil } - return walkFn(path, info, errors.Wrapf(err, "walk: open %q (%q)", path, w.root)) + return walkFn(path, info, fmt.Errorf("walk: open %q (%q): %w", path, w.root, err)) } fis, err := f.Readdir(-1) @@ -201,7 +201,7 @@ func (w *Walkway) walk(path string, info FileMetaInfo, dirEntries []FileMetaInfo if w.checkErr(filename, err) { return nil } - return walkFn(path, info, errors.Wrap(err, "walk: Readdir")) + return walkFn(path, info, fmt.Errorf("walk: Readdir: %w", err)) } dirEntries = fileInfosToFileMetaInfos(fis) diff --git a/hugofs/walk_test.go b/hugofs/walk_test.go index 2d9ec784d..2e162fa72 100644 --- a/hugofs/walk_test.go +++ b/hugofs/walk_test.go @@ -22,7 +22,7 @@ import ( "strings" "testing" - "github.com/pkg/errors" + "errors" "github.com/gohugoio/hugo/common/para" "github.com/gohugoio/hugo/htesting" -- cgit v1.2.3