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)
}