hugo

Unnamed repository; edit this file 'description' to name the repository.

git clone git://git.shimmy1996.com/hugo.git
commit 36220851e4ed7fc3fa78aa250d001d5f922210e7
parent 53ade40ba47e73d0505b1685538b525f291b6e08
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date:   Tue, 30 Jul 2019 13:35:16 +0200

Fix self-mounts on the main project

Fixes #6143

Diffstat:
Mhugolib/hugo_modules_test.go | 28++++++++++++++++++++++++++++
Mmodules/collect.go | 32++++++++++++++++++--------------
Mmodules/config.go | 3+++
3 files changed, 49 insertions(+), 14 deletions(-)
diff --git a/hugolib/hugo_modules_test.go b/hugolib/hugo_modules_test.go
@@ -506,3 +506,31 @@ weight = 2
 		}
 	}
 }
+
+func TestMountsProject(t *testing.T) {
+
+	config := `
+
+baseURL="https://example.org"
+
+[module]
+[[module.mounts]]
+source="mycontent"
+target="content"
+
+`
+	b := newTestSitesBuilder(t).
+		WithConfigFile("toml", config).
+		WithSourceFile(filepath.Join("mycontent", "mypage.md"), `
+---
+title: "My Page"
+---
+
+`)
+
+	b.Build(BuildCfg{})
+
+	//helpers.PrintFs(b.H.Fs.Source, "public", os.Stdout)
+
+	b.AssertFileContent("public/mypage/index.html", "Permalink: https://example.org/mypage/")
+}
diff --git a/modules/collect.go b/modules/collect.go
@@ -305,21 +305,25 @@ func (c *collector) addAndRecurse(owner *moduleAdapter, disabled bool) error {
 func (c *collector) applyMounts(moduleImport Import, mod *moduleAdapter) error {
 	mounts := moduleImport.Mounts
 
-	if !mod.projectMod && len(mounts) == 0 {
-		modConfig := mod.Config()
+	modConfig := mod.Config()
+
+	if len(mounts) == 0 {
+		// Mounts not defined by the import.
 		mounts = modConfig.Mounts
-		if len(mounts) == 0 {
-			// Create default mount points for every component folder that
-			// exists in the module.
-			for _, componentFolder := range files.ComponentFolders {
-				sourceDir := filepath.Join(mod.Dir(), componentFolder)
-				_, err := c.fs.Stat(sourceDir)
-				if err == nil {
-					mounts = append(mounts, Mount{
-						Source: componentFolder,
-						Target: componentFolder,
-					})
-				}
+
+	}
+
+	if !mod.projectMod && len(mounts) == 0 {
+		// Create default mount points for every component folder that
+		// exists in the module.
+		for _, componentFolder := range files.ComponentFolders {
+			sourceDir := filepath.Join(mod.Dir(), componentFolder)
+			_, err := c.fs.Stat(sourceDir)
+			if err == nil {
+				mounts = append(mounts, Mount{
+					Source: componentFolder,
+					Target: componentFolder,
+				})
 			}
 		}
 	}
diff --git a/modules/config.go b/modules/config.go
@@ -171,6 +171,9 @@ func ApplyProjectConfigDefaults(cfg config.Provider, mod Module) error {
 		mounts = append(mounts, Mount{Source: dirKey.component, Target: dirKey.component})
 	}
 
+	// Prepend the mounts from configuration.
+	mounts = append(moda.mounts, mounts...)
+
 	// Remove duplicates
 	seen := make(map[string]bool)
 	tmp := mounts[:0]