code: func addFromEnvFile(filePath string, addTo func(key, value string) error) error {
  	f, err := os.Open(filePath)
  	if err != nil {
  		return err
  	}
  	defer f.Close()
  
  	scanner := bufio.NewScanner(f)
  	currentLine := 0
  	for scanner.Scan() {
  		// Process the current line, retrieving a key/value pair if
  		// possible.
  		scannedBytes := scanner.Bytes()
  		key, value, err := proccessEnvFileLine(scannedBytes, filePath, currentLine)
  		if err != nil {
  			return err
  		}
  		currentLine++
  
  		if len(key) == 0 {
  			// no key means line was empty or a comment
  			continue
  		}
  
  		if err = addTo(key, value); err != nil {
  			return err
  		}
  	}
  	return nil
  }
docs: // addFromEnvFile processes an env file allows a generic addTo to handle the
  // collection of key value pairs or returns an error.