in bydbctl/internal/cmd/rest.go [97:140]
func parseFromYAML(tryParseGroup bool, reader io.Reader) (requests []reqBody, err error) {
contents, err := file.Read(filePath, reader)
if err != nil {
return nil, err
}
for _, c := range contents {
j, err := yaml.YAMLToJSON(c)
if err != nil {
return nil, err
}
var data map[string]interface{}
err = json.Unmarshal(j, &data)
if err != nil {
return nil, err
}
metadata, ok := data["metadata"].(map[string]interface{})
if !ok {
return nil, errors.WithMessage(errMalformedInput, "absent node: metadata")
}
group, ok := metadata["group"].(string)
if !ok && tryParseGroup {
group = viper.GetString("group")
if group == "" {
return nil, errors.New("please specify a group through the input json or the config file")
}
metadata["group"] = group
}
name, ok = metadata["name"].(string)
if !ok {
return nil, errors.WithMessage(errMalformedInput, "absent node: name in metadata")
}
j, err = json.Marshal(data)
if err != nil {
return nil, err
}
requests = append(requests, reqBody{
name: name,
group: group,
data: j,
parsedData: data,
})
}
return requests, nil
}