Thumbnail

rani/matterbridge.git

Clone URL: https://git.buni.party/rani/matterbridge.git

commit 2c5562dea26180993f8670f0a19f1aeda492d6ae Author: Patrick Connolly <patrick.c.connolly@gmail.com> Date: Thu Nov 08 05:32:12 2018 +0000 Clean up config loading. (#561) diff --git a/bridge/config/config.go b/bridge/config/config.go index 5ccf604..bdf77f8 100644 --- a/bridge/config/config.go +++ b/bridge/config/config.go @@ -27 +27 @@ package config    import (   "bytes" - "os" + "io/ioutil"   "strings"   "sync"   "time" @@ -18342 +18338 @@ type Config struct {  func NewConfig(cfgfile string) *Config {   log.SetFormatter(&prefixed.TextFormatter{PrefixPadding: 13, DisableColors: true, FullTimestamp: false})   flog := log.WithFields(log.Fields{"prefix": "config"}) - var cfg ConfigValues - viper.SetConfigType("toml")   viper.SetConfigFile(cfgfile) - viper.SetEnvPrefix("matterbridge") - viper.AddConfigPath(".") - viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_", "-", "_")) - viper.AutomaticEnv() - f, err := os.Open(cfgfile) + input, err := getFileContents(cfgfile)   if err != nil {   log.Fatal(err)   } - err = viper.ReadConfig(f) - if err != nil { - log.Fatal(err) - } - err = viper.Unmarshal(&cfg) - if err != nil { - log.Fatal("blah", err) - } - mycfg := new(Config) - mycfg.v = viper.GetViper() - if cfg.General.MediaDownloadSize == 0 { - cfg.General.MediaDownloadSize = 1000000 + mycfg := NewConfigFromString(input) + if mycfg.ConfigValues.General.MediaDownloadSize == 0 { + mycfg.ConfigValues.General.MediaDownloadSize = 1000000   }   viper.WatchConfig()   viper.OnConfigChange(func(e fsnotify.Event) {   flog.Println("Config file changed:", e.Name)   }) - - mycfg.ConfigValues = &cfg   return mycfg  }   +func getFileContents(filename string) ([]byte, error) { + input, err := ioutil.ReadFile(filename) + if err != nil { + log.Fatal(err) + return []byte(nil), err + } + return input, nil +} +  func NewConfigFromString(input []byte) *Config {   var cfg ConfigValues   viper.SetConfigType("toml") + viper.SetEnvPrefix("matterbridge") + viper.AddConfigPath(".") + viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_", "-", "_")) + viper.AutomaticEnv()   err := viper.ReadConfig(bytes.NewBuffer(input))   if err != nil {   log.Fatal(err)