func()

in code/go/internal/pkgpath/files.go [56:81]


func (f File) Values(path string) (interface{}, error) {
	fileName := f.Name()
	fileExt := strings.TrimLeft(filepath.Ext(fileName), ".")

	if fileExt != "json" && fileExt != "yaml" && fileExt != "yml" {
		return nil, fmt.Errorf("cannot extract values from file type = %s", fileExt)
	}

	contents, err := fs.ReadFile(f.fsys, f.path)
	if err != nil {
		return nil, fmt.Errorf("reading file content failed: %w", err)
	}

	var v interface{}
	if fileExt == "yaml" || fileExt == "yml" {
		if err := yaml.Unmarshal(contents, &v); err != nil {
			return nil, fmt.Errorf("unmarshalling YAML file failed (path: %s): %w", f.fsys.Path(fileName), err)
		}
	} else if fileExt == "json" {
		if err := json.Unmarshal(contents, &v); err != nil {
			return nil, fmt.Errorf("unmarshalling JSON file failed (path: %s): %w", f.fsys.Path(fileName), err)
		}
	}

	return jsonpath.Get(path, v)
}