diff options
author | Patrick Connolly <patrick.c.connolly@gmail.com> | 2018-11-08 05:32:12 +0800 |
---|---|---|
committer | Wim <wim@42.be> | 2018-11-07 22:32:12 +0100 |
commit | f2703979a47ce21792fbb4398bcc241e86beab6d (patch) | |
tree | a7c80dd5b7ef5350532c096678edeecc8030a0a9 | |
parent | d2a1dc792f9a2bb147afc6e8fde2c9f723f29cf1 (diff) | |
download | matterbridge-msglm-f2703979a47ce21792fbb4398bcc241e86beab6d.tar.gz matterbridge-msglm-f2703979a47ce21792fbb4398bcc241e86beab6d.tar.bz2 matterbridge-msglm-f2703979a47ce21792fbb4398bcc241e86beab6d.zip |
Clean up config loading. (#561)
-rw-r--r-- | bridge/config/config.go | 40 |
1 files changed, 18 insertions, 22 deletions
diff --git a/bridge/config/config.go b/bridge/config/config.go index 5ccf6041..bdf77f88 100644 --- a/bridge/config/config.go +++ b/bridge/config/config.go @@ -2,7 +2,7 @@ package config import ( "bytes" - "os" + "io/ioutil" "strings" "sync" "time" @@ -183,42 +183,38 @@ 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) |