summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2021-12-23 08:57:28 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2021-12-23 15:09:27 +0100
commitaee9e11a400ac231eb9e91c005f1fe039b106396 (patch)
treea1b9f4db23258f7a8402f67afd957835e4720b29
parentbd63c1aa56e05e88b162e9fd19b6d21fbc609df7 (diff)
Make sure we always create the /public folder
* Before this commit, when you had static files in the root of /content and no /public folder, that folder would not be created unless the /static syncer had already run. * So, with a common pattern doing `rm -rf public && hugo` would the fail now and then because /static and /content are processed in parallel (unless you have cleanDestinationDir=true) * This was even worse before commit 0b918e131fe523188b820d1e3fa0b08251abde69 – a frozen build. Closes #8166
-rw-r--r--hugolib/filesystems/basefs.go5
1 files changed, 5 insertions, 0 deletions
diff --git a/hugolib/filesystems/basefs.go b/hugolib/filesystems/basefs.go
index a51cc4b27..aae3613f2 100644
--- a/hugolib/filesystems/basefs.go
+++ b/hugolib/filesystems/basefs.go
@@ -428,6 +428,11 @@ func NewBase(p *paths.Paths, logger loggers.Logger, options ...func(*BaseFs) err
logger = loggers.NewWarningLogger()
}
+ // Make sure we always have the /public folder ready to use.
+ if err := fs.Destination.MkdirAll(p.AbsPublishDir, 0777); err != nil && !os.IsExist(err) {
+ return nil, err
+ }
+
publishFs := hugofs.NewBaseFileDecorator(afero.NewBasePathFs(fs.Destination, p.AbsPublishDir))
sourceFs := hugofs.NewBaseFileDecorator(afero.NewBasePathFs(fs.Source, p.WorkingDir))