Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/hugo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2022-03-14 18:02:04 +0300
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2022-04-08 14:26:16 +0300
commit0a56f2af4e1969e76e94fdfb56d1bbed0e685625 (patch)
treedb258649317ea350ce6c56f00483d5655963de16 /hugolib
parent9e360d3844f5077c65649e4c9c98f5cbd1c3efc0 (diff)
Revert "Revert "Allow rendering static files to disk and dynamic to memory in server mode""
This reverts commit 64b7b7a89753a39661219b2fcb92d7f185a03f63.
Diffstat (limited to 'hugolib')
-rw-r--r--hugolib/filesystems/basefs.go13
-rw-r--r--hugolib/pages_process.go16
-rw-r--r--hugolib/site.go4
3 files changed, 23 insertions, 10 deletions
diff --git a/hugolib/filesystems/basefs.go b/hugolib/filesystems/basefs.go
index 6e3f88a4b..0290d2e1c 100644
--- a/hugolib/filesystems/basefs.go
+++ b/hugolib/filesystems/basefs.go
@@ -71,6 +71,9 @@ type BaseFs struct {
// A read-only filesystem starting from the project workDir.
WorkDir afero.Fs
+ // The filesystem used for renderStaticToDisk.
+ PublishFsStatic afero.Fs
+
theBigFs *filesystemsCollector
// Locks.
@@ -438,15 +441,17 @@ func NewBase(p *paths.Paths, logger loggers.Logger, options ...func(*BaseFs) err
publishFs := hugofs.NewBaseFileDecorator(afero.NewBasePathFs(fs.Destination, p.AbsPublishDir))
sourceFs := hugofs.NewBaseFileDecorator(afero.NewBasePathFs(fs.Source, p.WorkingDir))
+ publishFsStatic := afero.NewBasePathFs(fs.Source, p.AbsPublishDir)
// Same as sourceFs, but no decoration. This is what's used by os.ReadDir etc.
workDir := afero.NewBasePathFs(afero.NewReadOnlyFs(fs.Source), p.WorkingDir)
b := &BaseFs{
- SourceFs: sourceFs,
- WorkDir: workDir,
- PublishFs: publishFs,
- buildMu: lockedfile.MutexAt(filepath.Join(p.WorkingDir, lockFileBuild)),
+ SourceFs: sourceFs,
+ WorkDir: workDir,
+ PublishFs: publishFs,
+ PublishFsStatic: publishFsStatic,
+ buildMu: lockedfile.MutexAt(filepath.Join(p.WorkingDir, lockFileBuild)),
}
for _, opt := range options {
diff --git a/hugolib/pages_process.go b/hugolib/pages_process.go
index d33f70d8e..47687eaad 100644
--- a/hugolib/pages_process.go
+++ b/hugolib/pages_process.go
@@ -33,9 +33,10 @@ func newPagesProcessor(h *HugoSites, sp *source.SourceSpec) *pagesProcessor {
procs := make(map[string]pagesCollectorProcessorProvider)
for _, s := range h.Sites {
procs[s.Lang()] = &sitePagesProcessor{
- m: s.pageMap,
- errorSender: s.h,
- itemChan: make(chan any, config.GetNumWorkerMultiplier()*2),
+ m: s.pageMap,
+ errorSender: s.h,
+ itemChan: make(chan interface{}, config.GetNumWorkerMultiplier()*2),
+ renderStaticToDisk: h.Cfg.GetBool("renderStaticToDisk"),
}
}
return &pagesProcessor{
@@ -118,6 +119,8 @@ type sitePagesProcessor struct {
ctx context.Context
itemChan chan any
itemGroup *errgroup.Group
+
+ renderStaticToDisk bool
}
func (p *sitePagesProcessor) Process(item any) error {
@@ -162,7 +165,12 @@ func (p *sitePagesProcessor) copyFile(fim hugofs.FileMetaInfo) error {
defer f.Close()
- return s.publish(&s.PathSpec.ProcessingStats.Files, target, f)
+ fs := s.PublishFs
+ if p.renderStaticToDisk {
+ fs = s.PublishFsStatic
+ }
+
+ return s.publish(&s.PathSpec.ProcessingStats.Files, target, f, fs)
}
func (p *sitePagesProcessor) doProcess(item any) error {
diff --git a/hugolib/site.go b/hugolib/site.go
index efa936830..d7b5cb64e 100644
--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -1829,10 +1829,10 @@ func (s *Site) lookupTemplate(layouts ...string) (tpl.Template, bool) {
return nil, false
}
-func (s *Site) publish(statCounter *uint64, path string, r io.Reader) (err error) {
+func (s *Site) publish(statCounter *uint64, path string, r io.Reader, fs afero.Fs) (err error) {
s.PathSpec.ProcessingStats.Incr(statCounter)
- return helpers.WriteToDisk(filepath.Clean(path), r, s.BaseFs.PublishFs)
+ return helpers.WriteToDisk(filepath.Clean(path), r, fs)
}
func (s *Site) kindFromFileInfoOrSections(fi *fileInfo, sections []string) string {