hugolib: Add validation for defaultContentLanguage
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 19 Jan 2018 07:24:10 +0000 (08:24 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 19 Jan 2018 07:24:10 +0000 (08:24 +0100)
When `languages` are defined, then `defaultContentLanguage` must match one of those.

Fixes #4298

hugolib/config.go

index 8e06d3e8e9227d88d43391f4ed7ba6859d6e0a15..f1b6ebe558d1c70088c4b3b9a2401b0aafaad922 100644 (file)
@@ -131,6 +131,22 @@ func loadLanguageSettings(cfg config.Provider, oldLangs helpers.Languages) error
                }
        }
 
+       defaultLang := cfg.GetString("defaultContentLanguage")
+
+       // The defaultContentLanguage is something the user has to decide, but it needs
+       // to match a language in the language definition list.
+       langExists := false
+       for _, lang := range langs {
+               if lang.Lang == defaultLang {
+                       langExists = true
+                       break
+               }
+       }
+
+       if !langExists {
+               return fmt.Errorf("site config value %q for defaultContentLanguage does not match any language definition", defaultLang)
+       }
+
        cfg.Set("languagesSorted", langs)
        cfg.Set("multilingual", len(langs) > 1)