code: func ReadConfigSet(dir, name string) (ConfigSet, error) {
  	configs := map[string][]byte{}
  	err := filepath.Walk(dir, func(p string, info os.FileInfo, err error) error {
  		if err != nil || !info.Mode().IsRegular() {
  			return err
  		}
  		content, err := ioutil.ReadFile(p)
  		if err != nil {
  			return err
  		}
  		relPath, err := filepath.Rel(dir, p)
  		if err != nil {
  			return err
  		}
  		configs[filepath.ToSlash(relPath)] = content
  		return nil
  	})
  	if err != nil {
  		return ConfigSet{}, errors.Annotate(err, "failed to read config files").Err()
  	}
  	return ConfigSet{
  		Name: name,
  		Data: configs,
  	}, nil
  }
docs: // ReadConfigSet reads all regular files in the given directory (recursively)
  // and returns them as a ConfigSet with given name.