diff options
author | David Karlsson <35727626+dvdksn@users.noreply.github.com> | 2023-07-15 11:13:08 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-15 11:13:08 +0200 |
commit | 286821e360e13b3a174854914c9cedd437bdd25e (patch) | |
tree | 5699a44ade0f60165394340916c6d84b9b352bf8 /hugolib | |
parent | 79f15be5b0e47a788f62e50ba3e354c247a65f6b (diff) |
Fix for data mounts in sub folders
Before this change, data files from Hugo modules were always mounted at the
root of the `data` directory. The File and FileMetaInfo structs for modules
are different from 'native' data directories.
This changes how the keyParts for data files are generated so that data
from modules or native directories are treated the same.
Diffstat (limited to 'hugolib')
-rw-r--r-- | hugolib/hugo_modules_test.go | 29 | ||||
-rw-r--r-- | hugolib/hugo_sites.go | 8 |
2 files changed, 34 insertions, 3 deletions
diff --git a/hugolib/hugo_modules_test.go b/hugolib/hugo_modules_test.go index 3353f508e..88a0c3ec6 100644 --- a/hugolib/hugo_modules_test.go +++ b/hugolib/hugo_modules_test.go @@ -1178,3 +1178,32 @@ target = "content/resources-b" b.AssertFileContent("public/resources-a/subdir/about/index.html", "Single") b.AssertFileContent("public/resources-b/subdir/about/index.html", "Single") } + +func TestMountData(t *testing.T) { + files := ` +-- hugo.toml -- +baseURL = 'https://example.org/' +disableKinds = ["taxonomy", "term", "RSS", "sitemap", "robotsTXT", "page", "section"] + +[[module.mounts]] +source = "data" +target = "data" + +[[module.mounts]] +source = "extra-data" +target = "data/extra" +-- extra-data/test.yaml -- +message: Hugo Rocks +-- layouts/index.html -- +{{ site.Data.extra.test.message }} +` + + b := NewIntegrationTestBuilder( + IntegrationTestConfig{ + T: t, + TxtarString: files, + }, + ).Build() + + b.AssertFileContent("public/index.html", "Hugo Rocks") +} diff --git a/hugolib/hugo_sites.go b/hugolib/hugo_sites.go index de19a3669..3b5efa2e5 100644 --- a/hugolib/hugo_sites.go +++ b/hugolib/hugo_sites.go @@ -555,13 +555,14 @@ func (h *HugoSites) loadData(fis []hugofs.FileMetaInfo) (err error) { h.data = make(map[string]any) for _, fi := range fis { + basePath := fi.Meta().Path fileSystem := spec.NewFilesystemFromFileMetaInfo(fi) files, err := fileSystem.Files() if err != nil { return err } for _, r := range files { - if err := h.handleDataFile(r); err != nil { + if err := h.handleDataFile(basePath, r); err != nil { return err } } @@ -570,7 +571,7 @@ func (h *HugoSites) loadData(fis []hugofs.FileMetaInfo) (err error) { return } -func (h *HugoSites) handleDataFile(r source.File) error { +func (h *HugoSites) handleDataFile(basePath string, r source.File) error { var current map[string]any f, err := r.FileInfo().Meta().Open() @@ -581,7 +582,8 @@ func (h *HugoSites) handleDataFile(r source.File) error { // Crawl in data tree to insert data current = h.data - keyParts := strings.Split(r.Dir(), helpers.FilePathSeparator) + dataPath := filepath.Join(basePath, r.Dir()) + keyParts := strings.Split(dataPath, helpers.FilePathSeparator) for _, key := range keyParts { if key != "" { |