summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2024-02-22 15:06:42 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2024-02-22 16:16:44 +0100
commitdb3bb623d4acd150768998bb1952b5399e3fa47c (patch)
tree8260f957786956391d17f656f27b85dbf9ece9fb
parentf5fd7ec8ccc1e2e325aa9b5ba94bbb36167a41a3 (diff)
Fix it so not all bundled resources are removed when one translation is drafted
Fixes #12105
-rw-r--r--hugolib/content_map_page.go21
-rw-r--r--hugolib/pagebundler_test.go26
-rw-r--r--hugolib/site_new.go9
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()