code: func ConsulStringToStructFunc() mapstructure.DecodeHookFunc {
  	return func(
  		f reflect.Type,
  		t reflect.Type,
  		data interface{}) (interface{}, error) {
  		if t == reflect.TypeOf(ConsulConfig{}) && f.Kind() == reflect.String {
  			log.Println("[WARN] consul now accepts a stanza instead of a string. " +
  				"Update your configuration files and change consul = \"\" to " +
  				"consul { } instead.")
  			return &ConsulConfig{
  				Address: String(data.(string)),
  			}, nil
  		}
  
  		return data, nil
  	}
  }
docs: // ConsulStringToStructFunc checks if the value set for the key should actually
  // be a struct and sets the appropriate value in the struct. This is for
  // backwards-compatability with older versions of Consul Template.