diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2023-01-04 18:24:36 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2023-05-16 18:01:29 +0200 |
commit | 241b21b0fd34d91fccb2ce69874110dceae6f926 (patch) | |
tree | d4e0118eac7e9c42f065815447a70805f8d6ad3e /hugofs/fs.go | |
parent | 6aededf6b42011c3039f5f66487a89a8dd65e0e7 (diff) |
Create a struct with all of Hugo's config options
Primary motivation is documentation, but it will also hopefully simplify the code.
Also,
* Lower case the default output format names; this is in line with the custom ones (map keys) and how
it's treated all the places. This avoids doing `stringds.EqualFold` everywhere.
Closes #10896
Closes #10620
Diffstat (limited to 'hugofs/fs.go')
-rw-r--r-- | hugofs/fs.go | 43 |
1 files changed, 30 insertions, 13 deletions
diff --git a/hugofs/fs.go b/hugofs/fs.go index 51bbe0619..855a821df 100644 --- a/hugofs/fs.go +++ b/hugofs/fs.go @@ -62,39 +62,55 @@ type Fs struct { // NewDefault creates a new Fs with the OS file system // as source and destination file systems. -func NewDefault(cfg config.Provider) *Fs { +func NewDefault(conf config.BaseConfig) *Fs { fs := Os - return newFs(fs, fs, cfg) + return NewFrom(fs, conf) } -// NewMem creates a new Fs with the MemMapFs -// as source and destination file systems. -// Useful for testing. -func NewMem(cfg config.Provider) *Fs { - fs := &afero.MemMapFs{} - return newFs(fs, fs, cfg) +func NewDefaultOld(cfg config.Provider) *Fs { + workingDir, publishDir := getWorkingPublishDir(cfg) + fs := Os + return newFs(fs, fs, workingDir, publishDir) } // 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, fs, cfg) +func NewFrom(fs afero.Fs, conf config.BaseConfig) *Fs { + return newFs(fs, fs, conf.WorkingDir, conf.PublishDir) +} + +func NewFromOld(fs afero.Fs, cfg config.Provider) *Fs { + workingDir, publishDir := getWorkingPublishDir(cfg) + return newFs(fs, fs, workingDir, publishDir) } // 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) + workingDir, publishDir := getWorkingPublishDir(cfg) + return newFs(source, destination, workingDir, publishDir) } -func newFs(source, destination afero.Fs, cfg config.Provider) *Fs { +func getWorkingPublishDir(cfg config.Provider) (string, string) { workingDir := cfg.GetString("workingDir") - publishDir := cfg.GetString("publishDir") + publishDir := cfg.GetString("publishDirDynamic") + if publishDir == "" { + publishDir = cfg.GetString("publishDir") + } + return workingDir, publishDir + +} + +func newFs(source, destination afero.Fs, workingDir, publishDir string) *Fs { if publishDir == "" { panic("publishDir is empty") } + if workingDir == "." { + workingDir = "" + } + // Sanity check if IsOsFs(source) && len(workingDir) < 2 { panic("workingDir is too short") @@ -158,6 +174,7 @@ func MakeReadableAndRemoveAllModulePkgDir(fs afero.Fs, dir string) (int, error) } return nil }) + return counter, fs.RemoveAll(dir) } |