Support JSON and YAML config formats (#1045)
Signed-off-by: Jakub Sokołowski <jakub@status.im>
This commit is contained in:
parent
9e3bd7398c
commit
6b017b226a
|
@ -3,6 +3,7 @@ package config
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
@ -240,7 +241,8 @@ func NewConfig(rootLogger *logrus.Logger, cfgfile string) Config {
|
||||||
logger.Fatalf("Failed to read configuration file: %#v", err)
|
logger.Fatalf("Failed to read configuration file: %#v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
mycfg := newConfigFromString(logger, input)
|
cfgtype := detectConfigType(cfgfile)
|
||||||
|
mycfg := newConfigFromString(logger, input, cfgtype)
|
||||||
if mycfg.cv.General.MediaDownloadSize == 0 {
|
if mycfg.cv.General.MediaDownloadSize == 0 {
|
||||||
mycfg.cv.General.MediaDownloadSize = 1000000
|
mycfg.cv.General.MediaDownloadSize = 1000000
|
||||||
}
|
}
|
||||||
|
@ -251,14 +253,26 @@ func NewConfig(rootLogger *logrus.Logger, cfgfile string) Config {
|
||||||
return mycfg
|
return mycfg
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// detectConfigType detects JSON and YAML formats, defaults to TOML.
|
||||||
|
func detectConfigType(cfgfile string) string {
|
||||||
|
fileExt := filepath.Ext(cfgfile)
|
||||||
|
switch fileExt {
|
||||||
|
case ".json":
|
||||||
|
return "json"
|
||||||
|
case ".yaml", ".yml":
|
||||||
|
return "yaml"
|
||||||
|
}
|
||||||
|
return "toml"
|
||||||
|
}
|
||||||
|
|
||||||
// NewConfigFromString instantiates a new configuration based on the specified string.
|
// NewConfigFromString instantiates a new configuration based on the specified string.
|
||||||
func NewConfigFromString(rootLogger *logrus.Logger, input []byte) Config {
|
func NewConfigFromString(rootLogger *logrus.Logger, input []byte) Config {
|
||||||
logger := rootLogger.WithFields(logrus.Fields{"prefix": "config"})
|
logger := rootLogger.WithFields(logrus.Fields{"prefix": "config"})
|
||||||
return newConfigFromString(logger, input)
|
return newConfigFromString(logger, input, "toml")
|
||||||
}
|
}
|
||||||
|
|
||||||
func newConfigFromString(logger *logrus.Entry, input []byte) *config {
|
func newConfigFromString(logger *logrus.Entry, input []byte, cfgtype string) *config {
|
||||||
viper.SetConfigType("toml")
|
viper.SetConfigType(cfgtype)
|
||||||
viper.SetEnvPrefix("matterbridge")
|
viper.SetEnvPrefix("matterbridge")
|
||||||
viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_", "-", "_"))
|
viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_", "-", "_"))
|
||||||
viper.AutomaticEnv()
|
viper.AutomaticEnv()
|
||||||
|
|
Loading…
Reference in New Issue