diff options
author | Bjørn Erik Pedersen <[email protected]> | 2022-04-16 17:50:50 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <[email protected]> | 2022-04-16 18:43:13 +0200 |
commit | 4deb5c60661bdb1d686664f0207f45517a086f29 (patch) | |
tree | 90cf4e7a352ab12970b7851a148accd2bdd5382f /hugofs | |
parent | 397fce560305d681948ad604ecfd85bd845ad407 (diff) | |
download | hugo-4deb5c60661bdb1d686664f0207f45517a086f29.tar.gz hugo-4deb5c60661bdb1d686664f0207f45517a086f29.zip |
Fix PostProcess regression for hugo server
Fixes #9788
Diffstat (limited to 'hugofs')
-rw-r--r-- | hugofs/fs.go | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/hugofs/fs.go b/hugofs/fs.go index 436387f13..63c25a4c0 100644 --- a/hugofs/fs.go +++ b/hugofs/fs.go @@ -65,7 +65,7 @@ type Fs struct { // as source and destination file systems. func NewDefault(cfg config.Provider) *Fs { fs := Os - return newFs(fs, cfg) + return newFs(fs, fs, cfg) } // NewMem creates a new Fs with the MemMapFs @@ -73,17 +73,23 @@ func NewDefault(cfg config.Provider) *Fs { // Useful for testing. func NewMem(cfg config.Provider) *Fs { fs := &afero.MemMapFs{} - return newFs(fs, cfg) + return newFs(fs, fs, cfg) } // NewFrom creates a new Fs based on the provided Afero Fs // as source and destination file systems. // Useful for testing. func NewFrom(fs afero.Fs, cfg config.Provider) *Fs { - return newFs(fs, cfg) + return newFs(fs, fs, cfg) } -func newFs(base afero.Fs, cfg config.Provider) *Fs { +// NewFrom creates a new Fs based on the provided Afero Fss +// as the source and destination file systems. +func NewFromSourceAndDestination(source, destination afero.Fs, cfg config.Provider) *Fs { + return newFs(source, destination, cfg) +} + +func newFs(source, destination afero.Fs, cfg config.Provider) *Fs { workingDir := cfg.GetString("workingDir") publishDir := cfg.GetString("publishDir") if publishDir == "" { @@ -91,27 +97,27 @@ func newFs(base afero.Fs, cfg config.Provider) *Fs { } // Sanity check - if IsOsFs(base) && len(workingDir) < 2 { + if IsOsFs(source) && len(workingDir) < 2 { panic("workingDir is too short") } absPublishDir := paths.AbsPathify(workingDir, publishDir) // Make sure we always have the /public folder ready to use. - if err := base.MkdirAll(absPublishDir, 0777); err != nil && !os.IsExist(err) { + if err := source.MkdirAll(absPublishDir, 0777); err != nil && !os.IsExist(err) { panic(err) } - pubFs := afero.NewBasePathFs(base, absPublishDir) + pubFs := afero.NewBasePathFs(destination, absPublishDir) return &Fs{ - Source: base, + Source: source, PublishDir: pubFs, PublishDirServer: pubFs, PublishDirStatic: pubFs, Os: &afero.OsFs{}, - WorkingDirReadOnly: getWorkingDirFsReadOnly(base, workingDir), - WorkingDirWritable: getWorkingDirFsWritable(base, workingDir), + WorkingDirReadOnly: getWorkingDirFsReadOnly(source, workingDir), + WorkingDirWritable: getWorkingDirFsWritable(source, workingDir), } } |