in bydbctl/internal/cmd/rest.go [223:275]
func parseFromYAMLForProperty(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")
}
container, ok := metadata["container"].(map[string]interface{})
if !ok {
return nil, errors.WithMessage(errMalformedInput, "absent node: container")
}
group, ok := container["group"].(string)
if !ok {
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 = container["name"].(string)
if !ok {
return nil, errors.WithMessage(errMalformedInput, "absent node: name in metadata")
}
id, ok = metadata["id"].(string)
if !ok {
return nil, errors.WithMessage(errMalformedInput, "absent node: id")
}
j, err = json.Marshal(data)
if err != nil {
return nil, err
}
requests = append(requests, reqBody{
name: name,
group: group,
id: id,
data: j,
parsedData: data,
})
}
return requests, nil
}