diff options
author | Bjørn Erik Pedersen <[email protected]> | 2024-02-22 15:06:42 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <[email protected]> | 2024-02-22 16:16:44 +0100 |
commit | db3bb623d4acd150768998bb1952b5399e3fa47c (patch) | |
tree | 8260f957786956391d17f656f27b85dbf9ece9fb /hugolib | |
parent | f5fd7ec8ccc1e2e325aa9b5ba94bbb36167a41a3 (diff) | |
download | hugo-db3bb623d4acd150768998bb1952b5399e3fa47c.tar.gz hugo-db3bb623d4acd150768998bb1952b5399e3fa47c.zip |
Fix it so not all bundled resources are removed when one translation is drafted
Fixes #12105
Diffstat (limited to 'hugolib')
-rw-r--r-- | hugolib/content_map_page.go | 21 | ||||
-rw-r--r-- | hugolib/pagebundler_test.go | 26 | ||||
-rw-r--r-- | hugolib/site_new.go | 9 |
3 files changed, 48 insertions, 8 deletions
diff --git a/hugolib/content_map_page.go b/hugolib/content_map_page.go index 5f0b11210..ee7f22676 100644 --- a/hugolib/content_map_page.go +++ b/hugolib/content_map_page.go @@ -221,10 +221,22 @@ func (t pageTrees) Shape(d, v int) *pageTrees { t.treePages = t.treePages.Shape(d, v) t.treeResources = t.treeResources.Shape(d, v) t.treeTaxonomyEntries = t.treeTaxonomyEntries.Shape(d, v) + t.createMutableTrees() return &t } +func (t *pageTrees) createMutableTrees() { + t.treePagesResources = doctree.WalkableTrees[contentNodeI]{ + t.treePages, + t.treeResources, + } + + t.resourceTrees = doctree.MutableTrees{ + t.treeResources, + } +} + var ( _ resource.Identifier = pageMapQueryPagesInSection{} _ resource.Identifier = pageMapQueryPagesBelowPath{} @@ -676,9 +688,15 @@ func (s *contentNodeShifter) Delete(n contentNodeI, dimension doctree.Dimension) } return wasDeleted, isEmpty case *resourceSource: + if lidx > 0 { + return false, false + } resource.MarkStale(v) return true, true case *pageState: + if lidx > 0 { + return false, false + } resource.MarkStale(v) return true, true default: @@ -1694,6 +1712,9 @@ func (sa *sitePagesAssembler) removeShouldNotBuild() error { return err } + if len(keys) == 0 { + return nil + } sa.pageMap.DeletePageAndResourcesBelow(keys...) return nil diff --git a/hugolib/pagebundler_test.go b/hugolib/pagebundler_test.go index e9686706d..ff7998ed9 100644 --- a/hugolib/pagebundler_test.go +++ b/hugolib/pagebundler_test.go @@ -893,3 +893,29 @@ Match: {{ range .Resources.Match "f1.en.*" }}{{ .Name }}: {{ .Content }}|{{ end b.AssertFileContent("public/mybundle/index.html", "GetMatch: f1.txt: F1.|", "Match: f1.txt: F1.|") } + +func TestBundleResourcesWhenLanguageVariantIsDraft(t *testing.T) { + files := ` +-- hugo.toml -- +baseURL = "https://example.com" +defaultContentLanguage = "en" +[languages] +[languages.en] +weight = 1 +[languages.nn] +weight = 2 +-- content/mybundle/index.en.md -- +-- content/mybundle/index.nn.md -- +--- +draft: true +--- +-- content/mybundle/f1.en.txt -- +F1. +-- layouts/_default/single.html -- +GetMatch: {{ with .Resources.GetMatch "f1.*" }}{{ .Name }}: {{ .Content }}|{{ end }}$ +` + + b := Test(t, files) + + b.AssertFileContent("public/mybundle/index.html", "GetMatch: f1.txt: F1.|") +} diff --git a/hugolib/site_new.go b/hugolib/site_new.go index debb81e77..2e8933497 100644 --- a/hugolib/site_new.go +++ b/hugolib/site_new.go @@ -165,14 +165,7 @@ func NewHugoSites(cfg deps.DepsCfg) (*HugoSites, error) { treeTaxonomyEntries: doctree.NewTreeShiftTree[*weightedContentNode](doctree.DimensionLanguage.Index(), len(confm.Languages)), } - pageTrees.treePagesResources = doctree.WalkableTrees[contentNodeI]{ - pageTrees.treePages, - pageTrees.treeResources, - } - - pageTrees.resourceTrees = doctree.MutableTrees{ - pageTrees.treeResources, - } + pageTrees.createMutableTrees() for i, confp := range confm.ConfigLangs() { language := confp.Language() |