From 280df4e380798d336826e9ce5446640e881d2b06 Mon Sep 17 00:00:00 2001 From: Phil Pennock Date: Tue, 13 May 2014 12:56:06 -0700 Subject: [PATCH] Fix Viperized .Site.Params git bisect identified 62dd1d4 as the breaking commit; when github.com/spf13/viper was introduced, the Params field was always empty. Given a map in YAML in Viper, the return type is `map[interface{}]interface{}`, _not_ `map[string]interface{}`, even if `.SetDefault()` has been called with an item of `map[string]interface{}{}` so the cast assertion on the `.Get("Params")` always failed. --- hugolib/site.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/hugolib/site.go b/hugolib/site.go index 8948a1b29..26185142e 100644 --- a/hugolib/site.go +++ b/hugolib/site.go @@ -260,9 +260,17 @@ func (s *Site) initialize() (err error) { } func (s *Site) initializeSiteInfo() { - params, ok := viper.Get("Params").(map[string]interface{}) + paramsV, ok := viper.Get("Params").(map[interface{}]interface{}) + // Warning: viper.Get(map_item) returns map[interface{}]interface{} + // even if .SetDefault called with a map[string]interface{} if !ok { - params = make(map[string]interface{}) + paramsV = make(map[interface{}]interface{}) + } + params := make(map[string]interface{}, len(paramsV)) + for k, v := range paramsV { + if s, ok := k.(string); ok { + params[s] = v + } } permalinks := make(PermalinkOverrides)