1
0
mirror of https://github.com/go-micro/go-micro.git synced 2025-05-19 21:23:04 +02:00
2021-10-12 12:55:53 +01:00

37 lines
633 B
Go

package cue
import (
"cuelang.org/go/cue"
"github.com/ghodss/yaml"
"go-micro.dev/v4/config/encoder"
)
type cueEncoder struct{}
func (c cueEncoder) Encode(v interface{}) ([]byte, error) {
return yaml.Marshal(v)
}
func (c cueEncoder) Decode(d []byte, v interface{}) error {
var r cue.Runtime
instance, err := r.Compile("config", d)
if err != nil {
return err
}
j, err := instance.Value().MarshalJSON()
if err != nil {
return err
}
return yaml.Unmarshal(j, v)
}
func (c cueEncoder) String() string {
return "cue"
}
// NewEncoder : create new cueEncoder
func NewEncoder() encoder.Encoder {
return cueEncoder{}
}