From: Bjørn Erik Pedersen Date: Thu, 23 Dec 2021 07:57:28 +0000 (+0100) Subject: Make sure we always create the /public folder X-Git-Tag: v0.91.2~3 X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=aee9e11a400ac231eb9e91c005f1fe039b106396;p=brevno-suite%2Fhugo 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 --- diff --git a/hugolib/filesystems/basefs.go b/hugolib/filesystems/basefs.go index a51cc4b2..aae3613f 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))