MCPcopy Create free account
hub / github.com/rilldata/rill / parseYAMLRefs

Function parseYAMLRefs

runtime/parser/parse_node.go:379–459  ·  view source on GitHub ↗

parseYAMLRefs parses a list of YAML nodes into a list of ResourceNames. It's used to parse the "refs" field in baseConfig.

(refs []yaml.Node)

Source from the content-addressed store, hash-verified

377// parseYAMLRefs parses a list of YAML nodes into a list of ResourceNames.
378// It's used to parse the "refs" field in baseConfig.
379func parseYAMLRefs(refs []yaml.Node) ([]ResourceName, error) {
380 var res []ResourceName
381 for i := range refs {
382 ref := refs[i]
383
384 // We support string refs of the form "my-resource" and "Kind/my-resource"
385 if ref.Kind == yaml.ScalarNode {
386 var identifier string
387 err := ref.Decode(&identifier)
388 if err != nil {
389 return nil, fmt.Errorf("invalid refs: %v", ref)
390 }
391
392 // Parse name and kind from identifier
393 parts := strings.Split(identifier, "/")
394 if len(parts) != 1 && len(parts) != 2 {
395 return nil, fmt.Errorf("invalid refs: invalid identifier %q", identifier)
396 }
397
398 var name ResourceName
399 if len(parts) == 1 {
400 name.Name = parts[0]
401 } else {
402 // Kind and name specified
403 kind, err := ParseResourceKind(parts[0])
404 if err != nil {
405 return nil, fmt.Errorf("invalid refs: %w", err)
406 }
407 name.Kind = kind
408 name.Name = parts[1]
409 }
410 res = append(res, name)
411 continue
412 }
413
414 // We support map refs of the form { type: "kind", name: "my-resource" }
415 if ref.Kind == yaml.MappingNode {
416 m := make(map[string]string)
417 err := ref.Decode(m)
418 if err != nil {
419 return nil, fmt.Errorf("invalid refs: %w", err)
420 }
421 if m["name"] == "" {
422 return nil, errors.New(`an object ref must provide the properties "type" and "name" properties`)
423 }
424
425 var name ResourceName
426 name.Name = m["name"]
427
428 if m["type"] != "" {
429 kind, err := ParseResourceKind(m["type"])
430 if err != nil {
431 return nil, fmt.Errorf("invalid refs: %w", err)
432 }
433 name.Kind = kind
434 }
435
436 // Backwards compatibility for "kind:" changed to "type:"

Callers 1

parseStemMethod · 0.85

Calls 3

ParseResourceKindFunction · 0.85
ErrorfMethod · 0.65
DecodeMethod · 0.45

Tested by

no test coverage detected