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 --- tpl/collections/collections.go | 5 +++-- tpl/collections/merge.go | 9 +++++---- tpl/collections/reflect_helpers.go | 5 +++-- tpl/collections/symdiff.go | 4 +--- 4 files changed, 12 insertions(+), 11 deletions(-) (limited to 'tpl/collections') diff --git a/tpl/collections/collections.go b/tpl/collections/collections.go index 24f43e62c..516e2c272 100644 --- a/tpl/collections/collections.go +++ b/tpl/collections/collections.go @@ -24,12 +24,13 @@ import ( "strings" "time" + "errors" + "github.com/gohugoio/hugo/common/collections" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/deps" "github.com/gohugoio/hugo/helpers" - "github.com/pkg/errors" "github.com/spf13/cast" ) @@ -736,7 +737,7 @@ func (ns *Namespace) Uniq(seq any) (any, error) { case reflect.Array: slice = reflect.MakeSlice(reflect.SliceOf(v.Type().Elem()), 0, 0) default: - return nil, errors.Errorf("type %T not supported", seq) + return nil, fmt.Errorf("type %T not supported", seq) } seen := make(map[any]bool) diff --git a/tpl/collections/merge.go b/tpl/collections/merge.go index abfc2da9c..4d408302b 100644 --- a/tpl/collections/merge.go +++ b/tpl/collections/merge.go @@ -14,13 +14,14 @@ package collections import ( + "fmt" "reflect" "strings" "github.com/gohugoio/hugo/common/hreflect" "github.com/gohugoio/hugo/common/maps" - "github.com/pkg/errors" + "errors" ) // Merge creates a copy of the final parameter and merges the preceding @@ -49,7 +50,7 @@ func (ns *Namespace) merge(src, dst any) (any, error) { vdst, vsrc := reflect.ValueOf(dst), reflect.ValueOf(src) if vdst.Kind() != reflect.Map { - return nil, errors.Errorf("destination must be a map, got %T", dst) + return nil, fmt.Errorf("destination must be a map, got %T", dst) } if !hreflect.IsTruthfulValue(vsrc) { @@ -57,11 +58,11 @@ func (ns *Namespace) merge(src, dst any) (any, error) { } if vsrc.Kind() != reflect.Map { - return nil, errors.Errorf("source must be a map, got %T", src) + return nil, fmt.Errorf("source must be a map, got %T", src) } if vsrc.Type().Key() != vdst.Type().Key() { - return nil, errors.Errorf("incompatible map types, got %T to %T", src, dst) + return nil, fmt.Errorf("incompatible map types, got %T to %T", src, dst) } return mergeMap(vdst, vsrc).Interface(), nil diff --git a/tpl/collections/reflect_helpers.go b/tpl/collections/reflect_helpers.go index 4aa137e88..4178850aa 100644 --- a/tpl/collections/reflect_helpers.go +++ b/tpl/collections/reflect_helpers.go @@ -18,8 +18,9 @@ import ( "reflect" "time" + "errors" + "github.com/mitchellh/hashstructure" - "github.com/pkg/errors" ) var ( @@ -103,7 +104,7 @@ func convertValue(v reflect.Value, to reflect.Type) (reflect.Value, error) { case isNumber(kind): return convertNumber(v, kind) default: - return reflect.Value{}, errors.Errorf("%s is not assignable to %s", v.Type(), to) + return reflect.Value{}, fmt.Errorf("%s is not assignable to %s", v.Type(), to) } } diff --git a/tpl/collections/symdiff.go b/tpl/collections/symdiff.go index 1c411bc35..8ecee3c4a 100644 --- a/tpl/collections/symdiff.go +++ b/tpl/collections/symdiff.go @@ -16,8 +16,6 @@ package collections import ( "fmt" "reflect" - - "github.com/pkg/errors" ) // SymDiff returns the symmetric difference of s1 and s2. @@ -54,7 +52,7 @@ func (ns *Namespace) SymDiff(s2, s1 any) (any, error) { if ids1[key] != ids2[key] { v, err := convertValue(ev, sliceElemType) if err != nil { - return nil, errors.WithMessage(err, "symdiff: failed to convert value") + return nil, fmt.Errorf("symdiff: failed to convert value: %w", err) } slice = reflect.Append(slice, v) } -- cgit v1.2.3