diff options
author | Bjørn Erik Pedersen <[email protected]> | 2018-04-07 11:27:22 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <[email protected]> | 2018-04-07 16:40:45 +0200 |
commit | 080302eb8757fd94ccbd6bf99103432cd98e716c (patch) | |
tree | 33816529e01bbdb3e3ad501de9ab2281058fc551 /commands/commandeer.go | |
parent | 094ec171420e659cdf962a19dd90105912ce9901 (diff) | |
download | hugo-080302eb8757fd94ccbd6bf99103432cd98e716c.tar.gz hugo-080302eb8757fd94ccbd6bf99103432cd98e716c.zip |
Fix handling of --contentDir etc. flag
We need to revisit the commands package re globals and tests, but this should fix the init order of flags and languages.
Fixes #4589
Diffstat (limited to 'commands/commandeer.go')
-rw-r--r-- | commands/commandeer.go | 110 |
1 files changed, 65 insertions, 45 deletions
diff --git a/commands/commandeer.go b/commands/commandeer.go index f7ac93efa..5dba5e6b3 100644 --- a/commands/commandeer.go +++ b/commands/commandeer.go @@ -19,6 +19,8 @@ import ( "sync" "time" + "github.com/gohugoio/hugo/config" + "github.com/spf13/cobra" "github.com/gohugoio/hugo/utils" @@ -56,8 +58,9 @@ type commandeer struct { // Used in cases where we get flooded with events in server mode. debounce func(f func()) - serverPorts []int - languages helpers.Languages + serverPorts []int + languagesConfigured bool + languages helpers.Languages configured bool } @@ -135,73 +138,90 @@ func (c *commandeer) loadConfig(running bool) error { sourceFs = c.DepsCfg.Fs.Source } - config, configFiles, err := hugolib.LoadConfig(hugolib.ConfigSourceDescriptor{Fs: sourceFs, Path: source, WorkingDir: dir, Filename: cfgFile}) - if err != nil { - return err - } + doWithConfig := func(cfg config.Provider) error { + for _, cmdV := range c.subCmdVs { + initializeFlags(cmdV, cfg) + } - c.Cfg = config - c.configFiles = configFiles + if baseURL != "" { + cfg.Set("baseURL", baseURL) + } - for _, cmdV := range c.subCmdVs { - c.initializeFlags(cmdV) - } + if len(disableKinds) > 0 { + cfg.Set("disableKinds", disableKinds) + } - if l, ok := c.Cfg.Get("languagesSorted").(helpers.Languages); ok { - c.languages = l - } + cfg.Set("logI18nWarnings", logI18nWarnings) - if baseURL != "" { - config.Set("baseURL", baseURL) - } + if theme != "" { + cfg.Set("theme", theme) + } - if c.doWithCommandeer != nil { - err = c.doWithCommandeer(c) - } + if themesDir != "" { + cfg.Set("themesDir", themesDir) + } - if err != nil { - return err - } + if destination != "" { + cfg.Set("publishDir", destination) + } - if len(disableKinds) > 0 { - c.Set("disableKinds", disableKinds) - } + cfg.Set("workingDir", dir) - logger, err := createLogger(cfg.Cfg) - if err != nil { - return err - } + if contentDir != "" { + cfg.Set("contentDir", contentDir) + } - cfg.Logger = logger + if layoutDir != "" { + cfg.Set("layoutDir", layoutDir) + } - config.Set("logI18nWarnings", logI18nWarnings) + if cacheDir != "" { + cfg.Set("cacheDir", cacheDir) + } - if theme != "" { - config.Set("theme", theme) + return nil } - if themesDir != "" { - config.Set("themesDir", themesDir) + doWithCommandeer := func(cfg config.Provider) error { + c.Cfg = cfg + if c.doWithCommandeer == nil { + return nil + } + err := c.doWithCommandeer(c) + return err } - if destination != "" { - config.Set("publishDir", destination) + config, configFiles, err := hugolib.LoadConfig( + hugolib.ConfigSourceDescriptor{Fs: sourceFs, Path: source, WorkingDir: dir, Filename: cfgFile}, + doWithCommandeer, + doWithConfig) + + if err != nil { + return err } - config.Set("workingDir", dir) + c.configFiles = configFiles - if contentDir != "" { - config.Set("contentDir", contentDir) + if l, ok := c.Cfg.Get("languagesSorted").(helpers.Languages); ok { + c.languagesConfigured = true + c.languages = l } - if layoutDir != "" { - config.Set("layoutDir", layoutDir) + // This is potentially double work, but we need to do this one more time now + // that all the languages have been configured. + if c.doWithCommandeer != nil { + if err := c.doWithCommandeer(c); err != nil { + return err + } } - if cacheDir != "" { - config.Set("cacheDir", cacheDir) + logger, err := createLogger(config) + if err != nil { + return err } + cfg.Logger = logger + createMemFs := config.GetBool("renderToMemory") if createMemFs { |