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{}