summaryrefslogtreecommitdiffstats
path: root/bridge/config
diff options
context:
space:
mode:
Diffstat (limited to 'bridge/config')
-rw-r--r--bridge/config/config.go40
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)