Little helper to run CNCF's k3s in Docker
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
k3d/pkg/util/yaml.go

57 lines
966 B

package util
import (
"bytes"
"io"
goyaml "gopkg.in/yaml.v2"
"sigs.k8s.io/yaml"
)
func SplitYAML(resources []byte) ([][]byte, error) {
dec := goyaml.NewDecoder(bytes.NewReader(resources))
var res [][]byte
for {
var value interface{}
err := dec.Decode(&value)
if err == io.EOF {
break
}
if err != nil {
return nil, err
}
valueBytes, err := goyaml.Marshal(value)
if err != nil {
return nil, err
}
res = append(res, valueBytes)
}
return res, nil
}
type YAMLEncoder struct {
encoder *goyaml.Encoder
}
func NewYAMLEncoder(w io.Writer) *YAMLEncoder {
return &YAMLEncoder{
encoder: goyaml.NewEncoder(w),
}
}
func (e *YAMLEncoder) Encode(v interface{}) (err error) {
data, err := yaml.Marshal(v)
if err != nil {
return err
}
var doc interface{}
if err := yaml.Unmarshal(data, &doc); err != nil {
return err
}
return e.encoder.Encode(doc)
}
func (e *YAMLEncoder) Close() (err error) {
return e.encoder.Close()
}