12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package util
- import (
- "strings"
- "github.com/spf13/viper"
- "github.com/chrislusf/seaweedfs/weed/util/log"
- )
- type Configuration interface {
- GetString(key string) string
- GetBool(key string) bool
- GetInt(key string) int
- GetStringSlice(key string) []string
- SetDefault(key string, value interface{})
- }
- func LoadConfiguration(configFileName string, required bool) (loaded bool) {
- // find a filer store
- viper.SetConfigName(configFileName) // name of config file (without extension)
- viper.AddConfigPath(".") // optionally look for config in the working directory
- viper.AddConfigPath("$HOME/.seaweedfs") // call multiple times to add many search paths
- viper.AddConfigPath("/etc/seaweedfs/") // path to look for the config file in
- log.Debugf("Reading %s.toml from %s", configFileName, viper.ConfigFileUsed())
- if err := viper.MergeInConfig(); err != nil { // Handle errors reading the config file
- if strings.Contains(err.Error(), "Not Found") {
- log.Warnf("Reading %s: %v", viper.ConfigFileUsed(), err)
- } else {
- log.Infof("Reading %s: %v", viper.ConfigFileUsed(), err)
- }
- if required {
- log.Fatalf("Failed to load %s.toml file from current directory, or $HOME/.seaweedfs/, or /etc/seaweedfs/"+
- "\n\nPlease use this command to generate the default %s.toml file\n"+
- " weed scaffold -config=%s -output=.\n\n\n",
- configFileName, configFileName, configFileName)
- } else {
- return false
- }
- }
- return true
- }
- func GetViper() *viper.Viper {
- v := &viper.Viper{}
- *v = *viper.GetViper()
- v.AutomaticEnv()
- v.SetEnvPrefix("weed")
- v.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
- return v
- }
|