54 lines
1.1 KiB
Go
54 lines
1.1 KiB
Go
package config
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
// Provider defines a set of read-only methods for accessing the application
|
|
// configuration params as defined in one of the config files.
|
|
type Provider interface {
|
|
ConfigFileUsed() string
|
|
Get(key string) interface{}
|
|
GetBool(key string) bool
|
|
GetDuration(key string) time.Duration
|
|
GetFloat64(key string) float64
|
|
GetInt(key string) int
|
|
GetInt64(key string) int64
|
|
GetSizeInBytes(key string) uint
|
|
GetString(key string) string
|
|
GetStringMap(key string) map[string]interface{}
|
|
GetStringMapString(key string) map[string]string
|
|
GetStringMapStringSlice(key string) map[string][]string
|
|
GetStringSlice(key string) []string
|
|
GetTime(key string) time.Time
|
|
InConfig(key string) bool
|
|
IsSet(key string) bool
|
|
}
|
|
|
|
var defaultConfig *viper.Viper
|
|
|
|
func Config() Provider {
|
|
return defaultConfig
|
|
}
|
|
|
|
func LoadConfigProvider(appName string) Provider {
|
|
return readViperConfig(appName)
|
|
}
|
|
|
|
func init() {
|
|
defaultConfig = readViperConfig("FORMULAIC")
|
|
}
|
|
|
|
func readViperConfig(appName string) *viper.Viper {
|
|
v := viper.New()
|
|
v.SetEnvPrefix(appName)
|
|
v.AutomaticEnv()
|
|
|
|
// global defaults
|
|
|
|
|
|
return v
|
|
}
|