code: func Interpolate(key string, data *interface{}, environmentLookup EnvironmentLookup) error {
  	return parseConfig(key, data, func(s string) string {
  		values := environmentLookup.Lookup(s, nil)
  
  		if len(values) == 0 {
  			if val, ok := defaultValues[s]; ok {
  				return val
  			}
  			logrus.Warnf("The %s variable is not set. Substituting a blank string.", s)
  			return ""
  		}
  
  		if strings.SplitN(values[0], "=", 2)[1] == "" {
  			if val, ok := defaultValues[s]; ok {
  				return val
  			}
  		}
  
  		// Use first result if many are given
  		value := values[0]
  
  		// Environment variables come in key=value format
  		// Return everything past first '='
  		return strings.SplitN(value, "=", 2)[1]
  	})
  }
docs: // Interpolate replaces variables in a map entry