@@ -63,6 +63,14 @@ func (w ByteWriter) Write(inputNodes []*yaml.RNode) error {
6363 // Even though we use the this value further down we must check this before removing annotations
6464 jsonEncodeSingleBareNode := w .shouldJSONEncodeSingleBareNode (nodes )
6565
66+ // Check for InitialDocSepAnnotation on a node
67+ var retainInitialDocSep bool
68+ for i := range nodes {
69+ if len (nodes [i ].GetAnnotations (kioutil .InitialDocSepAnnotation )) > 0 {
70+ retainInitialDocSep = true
71+ break
72+ }
73+ }
6674 // store seqindent annotation value for each node in order to set the encoder indentation
6775 var seqIndentsForNodes []string
6876 for i := range nodes {
@@ -85,6 +93,11 @@ func (w ByteWriter) Write(inputNodes []*yaml.RNode) error {
8593 if err != nil {
8694 return errors .Wrap (err )
8795 }
96+
97+ _ , err = nodes [i ].Pipe (yaml .ClearAnnotation (kioutil .InitialDocSepAnnotation ))
98+ if err != nil {
99+ return errors .Wrap (err )
100+ }
88101 }
89102 for _ , a := range w .ClearAnnotations {
90103 _ , err := nodes [i ].Pipe (yaml .ClearAnnotation (a ))
@@ -108,7 +121,13 @@ func (w ByteWriter) Write(inputNodes []*yaml.RNode) error {
108121 return errors .Wrap (encoder .Encode (nodes [0 ]))
109122 }
110123
124+ if retainInitialDocSep {
125+ if _ , err := w .Writer .Write ([]byte ("---\n " )); err != nil {
126+ return errors .Wrap (err )
127+ }
128+ }
111129 encoder := yaml .NewEncoder (w .Writer )
130+
112131 defer encoder .Close ()
113132 // don't wrap the elements
114133 if w .WrappingKind == "" {
0 commit comments