12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package core
- import (
- "encoding/json"
- "io/ioutil"
- "os"
- "strings"
- "github.com/go-yaml/yaml"
- )
- // ParseConfig, reads yaml or json file into a struct
- func ParseConfig(srcfile string, out interface{}) (err error) {
- if srcfile == "" {
- return
- }
- f, err := os.Open(srcfile)
- if err != nil {
- return err
- }
- defer f.Close()
- if strings.HasSuffix(srcfile, ".json") {
- // Read as JSON
- json.NewDecoder(f).Decode(out)
- return
- }
- if strings.HasSuffix(srcfile, ".yaml") {
- data, err := ioutil.ReadAll(f)
- if err != nil {
- return err
- }
- // Read as yaml
- yaml.Unmarshal(data, out)
- }
- return err
- }
- func SaveConfig(name string, obj interface{}) (err error) {
- var data []byte
- if strings.HasSuffix(name, ".json") {
- data, err = json.MarshalIndent(obj, " ", " ")
- if err != nil {
- return err
- }
- }
- if strings.HasSuffix(name, ".yaml") {
- data, err = yaml.Marshal(obj)
- if err != nil {
- return err
- }
- }
- f, err := os.OpenFile(name, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600)
- if err != nil {
- log.Fatalf("Unable to save config: %v\n", err)
- }
- defer f.Close()
- f.Write(data)
- f.Sync()
- return err
- }
|