gitee.com/h79/goutils@v1.22.10/common/yaml/yaml.go (about) 1 package yaml 2 3 import ( 4 "gitee.com/h79/goutils/common/file" 5 "gitee.com/h79/goutils/common/result" 6 "gopkg.in/yaml.v3" 7 "os" 8 ) 9 10 func Write(name string, data interface{}, perm os.FileMode) error { 11 return file.WriteFileName(name, perm, func(w *os.File) error { 12 enc := yaml.NewEncoder(w) 13 enc.SetIndent(2) 14 if err := enc.Encode(data); err != nil { 15 return result.Errorf(result.ErrYaml, "Encode %s yaml failed,err: %v", name, err).Log() 16 } 17 return nil 18 }) 19 } 20 21 func Read(name string, data interface{}) error { 22 _, err := file.ReadFileName(name, func(r *os.File) error { 23 dec := yaml.NewDecoder(r) 24 if err := dec.Decode(data); err != nil { 25 return result.Errorf(result.ErrYaml, "Decode %s yaml failed,err: %v", name, err).Log() 26 } 27 return nil 28 }) 29 return err 30 } 31 32 type coder struct { 33 } 34 35 func (j *coder) Unmarshal(content []byte, v interface{}) error { 36 return yaml.Unmarshal(content, v) 37 } 38 39 func (j *coder) Marshal(v interface{}) ([]byte, error) { 40 return yaml.Marshal(v) 41 } 42 43 var DefaultCoder = &coder{}