From 76502a247b461b5fc7113a84211a56334a4a0d5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Thu, 1 Jun 2023 09:53:40 +0200 Subject: [PATCH] commands: Add --lang to hugo config Fixes #11057 --- commands/config.go | 14 +++++++++++++- config/allconfig/allconfig.go | 5 +++++ config/allconfig/integration_test.go | 2 +- hugolib/config_test.go | 5 ++--- 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/commands/config.go b/commands/config.go index 44c5a1c32eb..fe20196aace 100644 --- a/commands/config.go +++ b/commands/config.go @@ -23,6 +23,7 @@ import ( "time" "github.com/bep/simplecobra" + "github.com/gohugoio/hugo/config/allconfig" "github.com/gohugoio/hugo/modules" "github.com/gohugoio/hugo/parser" "github.com/gohugoio/hugo/parser/metadecoders" @@ -42,6 +43,7 @@ type configCommand struct { r *rootCommand format string + lang string commands []simplecobra.Commander } @@ -59,7 +61,16 @@ func (c *configCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, arg if err != nil { return err } - config := conf.configs.Base + var config *allconfig.Config + if c.lang != "" { + var found bool + config, found = conf.configs.LanguageConfigMap[c.lang] + if !found { + return fmt.Errorf("language %q not found", c.lang) + } + } else { + config = conf.configs.LanguageConfigSlice[0] + } var buf bytes.Buffer dec := json.NewEncoder(&buf) @@ -100,6 +111,7 @@ func (c *configCommand) Init(cd *simplecobra.Commandeer) error { cmd.Short = "Print the site configuration" cmd.Long = `Print the site configuration, both default and custom settings.` cmd.Flags().StringVar(&c.format, "format", "toml", "preferred file format (toml, yaml or json)") + cmd.Flags().StringVar(&c.lang, "lang", "", "the language to display config for. Defaults to the first language defined.") applyLocalFlagsBuildConfig(cmd, c.r) return nil diff --git a/config/allconfig/allconfig.go b/config/allconfig/allconfig.go index 40bb2221d47..ade9607dded 100644 --- a/config/allconfig/allconfig.go +++ b/config/allconfig/allconfig.go @@ -664,6 +664,11 @@ func (c *Configs) Init() error { } } + // Transfer the changed mounts to the language versions (all share the same mount set, but can be displayed in different languages). + for _, l := range c.LanguageConfigSlice { + l.Module.Mounts = c.Base.Module.Mounts + } + return nil } diff --git a/config/allconfig/integration_test.go b/config/allconfig/integration_test.go index e96dbd29689..2de83eaa4cc 100644 --- a/config/allconfig/integration_test.go +++ b/config/allconfig/integration_test.go @@ -60,7 +60,7 @@ Title: {{ .Title }} b.Assert(enConcp.BaseURL().String(), qt.Equals, "https://example.com") modConf := enConf.Module - b.Assert(modConf.Mounts, qt.HasLen, 2) + b.Assert(modConf.Mounts, qt.HasLen, 8) b.Assert(modConf.Mounts[0].Source, qt.Equals, filepath.FromSlash("content/en")) b.Assert(modConf.Mounts[0].Target, qt.Equals, "content") b.Assert(modConf.Mounts[0].Lang, qt.Equals, "en") diff --git a/hugolib/config_test.go b/hugolib/config_test.go index 245180e1285..3b137d8d673 100644 --- a/hugolib/config_test.go +++ b/hugolib/config_test.go @@ -1172,8 +1172,7 @@ Home. }, ).Build() - modConf := b.H.Configs.Base.Module - - b.Assert(modConf.Mounts, qt.HasLen, 7) + b.Assert(b.H.Configs.Base.Module.Mounts, qt.HasLen, 7) + b.Assert(b.H.Configs.LanguageConfigSlice[0].Module.Mounts, qt.HasLen, 7) }