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 --- cache/filecache/filecache_config.go | 14 ++++++++------ cache/filecache/filecache_pruner.go | 4 ++-- 2 files changed, 10 insertions(+), 8 deletions(-) (limited to 'cache') diff --git a/cache/filecache/filecache_config.go b/cache/filecache/filecache_config.go index 816c6b8a6..a82133ab7 100644 --- a/cache/filecache/filecache_config.go +++ b/cache/filecache/filecache_config.go @@ -14,6 +14,7 @@ package filecache import ( + "fmt" "path" "path/filepath" "strings" @@ -25,8 +26,9 @@ import ( "github.com/gohugoio/hugo/helpers" + "errors" + "github.com/mitchellh/mapstructure" - "github.com/pkg/errors" "github.com/spf13/afero" ) @@ -153,7 +155,7 @@ func DecodeConfig(fs afero.Fs, cfg config.Provider) (Configs, error) { } if err := decoder.Decode(v); err != nil { - return nil, errors.Wrap(err, "failed to decode filecache config") + return nil, fmt.Errorf("failed to decode filecache config: %w", err) } if cc.Dir == "" { @@ -162,7 +164,7 @@ func DecodeConfig(fs afero.Fs, cfg config.Provider) (Configs, error) { name := strings.ToLower(k) if !valid[name] { - return nil, errors.Errorf("%q is not a valid cache name", name) + return nil, fmt.Errorf("%q is not a valid cache name", name) } c[name] = cc @@ -197,12 +199,12 @@ func DecodeConfig(fs afero.Fs, cfg config.Provider) (Configs, error) { if !v.isResourceDir { if isOsFs && !filepath.IsAbs(v.Dir) { - return c, errors.Errorf("%q must resolve to an absolute directory", v.Dir) + return c, fmt.Errorf("%q must resolve to an absolute directory", v.Dir) } // Avoid cache in root, e.g. / (Unix) or c:\ (Windows) if len(strings.TrimPrefix(v.Dir, filepath.VolumeName(v.Dir))) == 1 { - return c, errors.Errorf("%q is a root folder and not allowed as cache dir", v.Dir) + return c, fmt.Errorf("%q is a root folder and not allowed as cache dir", v.Dir) } } @@ -242,5 +244,5 @@ func resolveDirPlaceholder(fs afero.Fs, cfg config.Provider, placeholder string) return filepath.Base(workingDir), false, nil } - return "", false, errors.Errorf("%q is not a valid placeholder (valid values are :cacheDir or :resourceDir)", placeholder) + return "", false, fmt.Errorf("%q is not a valid placeholder (valid values are :cacheDir or :resourceDir)", placeholder) } diff --git a/cache/filecache/filecache_pruner.go b/cache/filecache/filecache_pruner.go index db1875701..e5e571972 100644 --- a/cache/filecache/filecache_pruner.go +++ b/cache/filecache/filecache_pruner.go @@ -14,12 +14,12 @@ package filecache import ( + "fmt" "io" "os" "github.com/gohugoio/hugo/hugofs" - "github.com/pkg/errors" "github.com/spf13/afero" ) @@ -39,7 +39,7 @@ func (c Caches) Prune() (int, error) { if os.IsNotExist(err) { continue } - return counter, errors.Wrapf(err, "failed to prune cache %q", k) + return counter, fmt.Errorf("failed to prune cache %q: %w", k, err) } } -- cgit v1.2.3