diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2019-07-31 12:31:31 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2019-07-31 14:20:24 +0200 |
commit | 0e086785fa4be8086256e9d7de6cda78e18d00ee (patch) | |
tree | c82c36cbbc97ebcbbe10520bed79a7c70af43f25 /hugolib/pages_capture.go | |
parent | 02b947eaa3cc68404180d796a2f7119dce074539 (diff) |
hugolib: Fix bundle header clone logic
Fixes #6136
Diffstat (limited to 'hugolib/pages_capture.go')
-rw-r--r-- | hugolib/pages_capture.go | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/hugolib/pages_capture.go b/hugolib/pages_capture.go index 094933793..361b87e84 100644 --- a/hugolib/pages_capture.go +++ b/hugolib/pages_capture.go @@ -344,7 +344,7 @@ func (c *pagesCollector) addToBundle(info hugofs.FileMetaInfo, btyp bundleDirTyp } cloneBundle := func(lang string) *fileinfoBundle { - // Every bundled file needs a content file header. + // Every bundled content file needs a content file header. // Use the default content language if found, else just // pick one. var ( @@ -376,6 +376,7 @@ func (c *pagesCollector) addToBundle(info hugofs.FileMetaInfo, btyp bundleDirTyp bundle := getBundle(lang) isBundleHeader := c.isBundleHeader(info) classifier := info.Meta().Classifier() + isContent := classifier == files.ContentClassContent if bundle == nil { if isBundleHeader { bundle = &fileinfoBundle{header: info} @@ -384,28 +385,32 @@ func (c *pagesCollector) addToBundle(info hugofs.FileMetaInfo, btyp bundleDirTyp if btyp == bundleBranch { // No special logic for branch bundles. // Every language needs its own _index.md file. + // Also, we only clone bundle headers for lonsesome, bundled, + // content files. return c.handleFiles(info) } - bundle = cloneBundle(lang) - bundles[lang] = bundle + if isContent { + bundle = cloneBundle(lang) + bundles[lang] = bundle + } } } - if !isBundleHeader { + if !isBundleHeader && bundle != nil { bundle.resources = append(bundle.resources, info) } if classifier == files.ContentClassFile { translations := info.Meta().Translations() - if len(translations) < len(bundles) { - for lang, b := range bundles { - if !stringSliceContains(lang, translations...) && !b.containsResource(info.Name()) { - // Clone and add it to the bundle. - clone := c.cloneFileInfo(info) - clone.Meta()["lang"] = lang - b.resources = append(b.resources, clone) - } + + for lang, b := range bundles { + if !stringSliceContains(lang, translations...) && !b.containsResource(info.Name()) { + + // Clone and add it to the bundle. + clone := c.cloneFileInfo(info) + clone.Meta()["lang"] = lang + b.resources = append(b.resources, clone) } } } |