From b92e779630f9e22067079770f549dc263ae64086 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Thu, 20 Aug 2026 12:47:58 +0200 Subject: [PATCH] Fix some linter errors reported by Staticcheck --- common/herrors/errors.go | 11 +++++++++++ config/allconfig/allconfig.go | 13 +++++++++---- hugolib/content_map_page_assembler.go | 4 ++-- hugolib/integrationtest_builder.go | 18 +----------------- hugolib/sitesmatrix/vectorstores.go | 21 ++++++++------------- resources/post_publish.go | 6 +----- 6 files changed, 32 insertions(+), 41 deletions(-) diff --git a/common/herrors/errors.go b/common/herrors/errors.go index 5e223f42f..551e74401 100644 --- a/common/herrors/errors.go +++ b/common/herrors/errors.go @@ -178,3 +178,14 @@ func improveIfNilPointerMsg(inErr error) string { s := fmt.Sprintf("– %s is nil; wrap it in if or with: {{ with %s }}{{ .%s }}{{ end }}", receiverName, receiver, field) return nilPointerErrRe.ReplaceAllString(inErr.Error(), s) } + +// Or returns the first non-nil error from the given list of errors. +// If all errors are nil, it returns nil. +func Or(errs ...error) error { + for _, err := range errs { + if err != nil { + return err + } + } + return nil +} diff --git a/config/allconfig/allconfig.go b/config/allconfig/allconfig.go index 5613b177c..1a941ba1b 100644 --- a/config/allconfig/allconfig.go +++ b/config/allconfig/allconfig.go @@ -1017,15 +1017,20 @@ func newDefaultConfig() *Config { Timeout: "60s", CommonDirs: config.CommonDirs{ + //lint:ignore SA1019 Keep as adapter for now. ArcheTypeDir: "archetypes", ContentDir: "content", ResourceDir: "resources", PublishDir: "public", ThemesDir: "themes", - AssetDir: "assets", - LayoutDir: "layouts", - I18nDir: "i18n", - DataDir: "data", + //lint:ignore SA1019 Keep as adapter for now. + AssetDir: "assets", + //lint:ignore SA1019 Keep as adapter for now. + LayoutDir: "layouts", + //lint:ignore SA1019 Keep as adapter for now. + I18nDir: "i18n", + //lint:ignore SA1019 Keep as adapter for now. + DataDir: "data", }, }, } diff --git a/hugolib/content_map_page_assembler.go b/hugolib/content_map_page_assembler.go index 54cff0fc3..8fb0fbd34 100644 --- a/hugolib/content_map_page_assembler.go +++ b/hugolib/content_map_page_assembler.go @@ -14,7 +14,6 @@ package hugolib import ( - "cmp" "context" "fmt" "path" @@ -23,6 +22,7 @@ import ( "github.com/bep/helpers/maphelpers" "github.com/gohugoio/go-radix" + "github.com/gohugoio/hugo/common/herrors" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/hugofs/files" @@ -134,7 +134,7 @@ func (a *allPagesAssembler) createAllPages() error { }() } - if err := cmp.Or(a.doCreatePages("", 0), a.g.Wait()); err != nil { + if err := herrors.Or(a.doCreatePages("", 0), a.g.Wait()); err != nil { return err } if err := a.pwRoot.WalkContext.HandleEventsAndHooks(); err != nil { diff --git a/hugolib/integrationtest_builder.go b/hugolib/integrationtest_builder.go index 6898e825b..b7ecbe25a 100644 --- a/hugolib/integrationtest_builder.go +++ b/hugolib/integrationtest_builder.go @@ -1179,23 +1179,7 @@ func (s *IntegrationTestBuilder) readFileFromFs(t testing.TB, fs afero.Fs, filen t.Helper() filename = filepath.Clean(filename) b, err := afero.ReadFile(fs, filename) - if err != nil { - // Print some debug info - hadSlash := strings.HasPrefix(filename, helpers.FilePathSeparator) - start := 0 - if hadSlash { - start = 1 - } - end := start + 1 - - parts := strings.Split(filename, helpers.FilePathSeparator) - if parts[start] == "work" { - end++ - } - - s.Assert(err, qt.IsNil) - - } + s.Assert(err, qt.IsNil) return string(b) } diff --git a/hugolib/sitesmatrix/vectorstores.go b/hugolib/sitesmatrix/vectorstores.go index b865bea65..574afcdf3 100644 --- a/hugolib/sitesmatrix/vectorstores.go +++ b/hugolib/sitesmatrix/vectorstores.go @@ -14,7 +14,6 @@ package sitesmatrix import ( - "cmp" "fmt" "iter" "maps" @@ -780,7 +779,7 @@ func (b *IntSetsBuilder) Build() *IntSets { } func (b *IntSetsBuilder) WithConfig(cfg IntSetsConfig) *IntSetsBuilder { - applyFilter := func(what string, values []string, matcher ConfiguredDimension) (*hmaps.OrderedIntSet, error) { + applyFilter := func(what string, values []string, matcher ConfiguredDimension) *hmaps.OrderedIntSet { var result *hmaps.OrderedIntSet if len(values) == 0 { @@ -800,16 +799,16 @@ func (b *IntSetsBuilder) WithConfig(cfg IntSetsConfig) *IntSetsBuilder { } } - return result, nil + return result } filter, err := predicate.NewIndexStringPredicateFromGlobsAndRanges(values, matcher.ResolveIndex, hglob.GetGlobDot) if err != nil { - return nil, fmt.Errorf("failed to create filter for %s: %w", what, err) + panic(fmt.Errorf("failed to create filter for %s: %w", what, err)) } iter, err := matcher.IndexMatch(filter) if err != nil { - return nil, fmt.Errorf("failed to match %s %q: %w", what, values, err) + panic(fmt.Errorf("failed to match %s %q: %w", what, values, err)) } for i := range iter { if result == nil { @@ -818,16 +817,12 @@ func (b *IntSetsBuilder) WithConfig(cfg IntSetsConfig) *IntSetsBuilder { result.Set(i) } - return result, nil + return result } - l, err1 := applyFilter("languages", cfg.Globs.Languages, b.cfg.ConfiguredLanguages) - v, err2 := applyFilter("versions", cfg.Globs.Versions, b.cfg.ConfiguredVersions) - r, err3 := applyFilter("roles", cfg.Globs.Roles, b.cfg.ConfiguredRoles) - - if err := cmp.Or(err1, err2, err3); err != nil { - panic(fmt.Errorf("failed to apply filters: %w", err)) - } + l := applyFilter("languages", cfg.Globs.Languages, b.cfg.ConfiguredLanguages) + v := applyFilter("versions", cfg.Globs.Versions, b.cfg.ConfiguredVersions) + r := applyFilter("roles", cfg.Globs.Roles, b.cfg.ConfiguredRoles) b.GlobFilterMisses = Bools{ len(cfg.Globs.Languages) > 0 && l == nil, diff --git a/resources/post_publish.go b/resources/post_publish.go index 848755782..c8e59a612 100644 --- a/resources/post_publish.go +++ b/resources/post_publish.go @@ -26,10 +26,6 @@ type transformationKeyer interface { func (spec *Spec) PostProcess(r resource.Resource) (postpub.PostPublishedResource, error) { key := r.(transformationKeyer).TransformationKey() return spec.PostProcessResources.GetOrCreate(key, func() (postpub.PostPublishedResource, error) { - result := postpub.NewPostPublishResource(spec.incr.Incr(), r) - if result == nil { - panic("got nil result") - } - return result, nil + return postpub.NewPostPublishResource(spec.incr.Incr(), r), nil }) }