fix: propagate alias resolution and encoder close errors

Signed-off-by: Jeff Rescignano <jeff@jeffresc.dev>
pull/32204/head
Jeff Rescignano 3 months ago
parent fbd7cb48ce
commit 4900776683
No known key found for this signature in database

@ -207,8 +207,9 @@ func annotateAndMerge(files map[string]string) (string, error) {
// kio.ParseAll flattens `kind: List` into one document per item; resolve aliases // kio.ParseAll flattens `kind: List` into one document per item; resolve aliases
// first so an anchor and its alias aren't split across documents (anchors are // first so an anchor and its alias aren't split across documents (anchors are
// document-scoped), which would leave the alias dangling. // document-scoped), which would leave the alias dangling.
if resolved, rerr := resolveYAMLAliases(doc); rerr == nil { doc, err := resolveYAMLAliases(doc)
doc = resolved if err != nil {
return "", fmt.Errorf("resolving aliases in %s: %w", fname, err)
} }
manifests, err := kio.ParseAll(doc) manifests, err := kio.ParseAll(doc)
if err != nil { if err != nil {
@ -235,7 +236,9 @@ func annotateAndMerge(files map[string]string) (string, error) {
func resolveYAMLAliases(doc string) (string, error) { func resolveYAMLAliases(doc string) (string, error) {
var node yaml.Node var node yaml.Node
if err := yaml.Unmarshal([]byte(doc), &node); err != nil { if err := yaml.Unmarshal([]byte(doc), &node); err != nil {
return "", err // Preserve the surrounding code's leniency for badly-formed docs;
// kio.ParseAll reports them downstream.
return doc, nil
} }
if !resolveAliasNodes(&node) { if !resolveAliasNodes(&node) {
return doc, nil return doc, nil
@ -247,7 +250,9 @@ func resolveYAMLAliases(doc string) (string, error) {
if err := enc.Encode(&node); err != nil { if err := enc.Encode(&node); err != nil {
return "", err return "", err
} }
_ = enc.Close() if err := enc.Close(); err != nil {
return "", err
}
return buf.String(), nil return buf.String(), nil
} }

Loading…
Cancel
Save