package yamlsettings import ( "io" "os" "gopkg.in/yaml.v2" ) // LoadFiles marshals your app settings from the default.yml overridden // by the settings.yml file. func LoadFiles(defaultsFile, settingsFile string, v interface{}) error { // Read the defaults file. if err := LoadFile(defaultsFile, v); err != nil { return err } // Read the settings.yml. It's OK if it doesn't exist. if err := LoadFile(settingsFile, v); err != nil && !os.IsNotExist(err) { return err } return nil } // LoadFile opens and marshals YAML settings from a single config file. func LoadFile(filename string, v interface{}) error { fh, err := os.Open(filename) if err != nil { return err } dec := yaml.NewDecoder(fh) return dec.Decode(v) } // LoadReaders marshals your app settings from the defaults and settings // readers, so you can feed in YAML data from sources other than files // on disk. func LoadReaders(defaults, settings io.Reader, v interface{}) error { if defaults != nil { if err := yaml.NewDecoder(defaults).Decode(v); err != nil { return err } } if settings != nil { return yaml.NewDecoder(settings).Decode(v) } return nil }