package main import ( log "github.com/Sirupsen/logrus" "github.com/spf13/viper" ) type Config struct { DBDBName string DBHost string DBPort int DBUser string DBPassword string DBOptions string } // Parses the configuration and sets the configuration struct. func (c *Config) parseConfig(configFile string) { viper.SetDefault("DBDBName", "alkobote") viper.SetDefault("DBHost", "127.0.0.1") viper.SetDefault("DBPort", 3306) // Name of the configuration file viper.SetConfigName("config") // Where to find the config file if configFile == "" { viper.AddConfigPath("/etc/alkobote.de/") viper.AddConfigPath(".") viper.AddConfigPath("$HOME/.config/alkobote.de/") viper.AddConfigPath("$HOME/alkobote.de/") } else { viper.AddConfigPath(configFile) } // Env variables need to be prefixed with "ALKOBOTE_" viper.SetEnvPrefix("ALKOBOTE") // Parses automatic the matching env variables viper.AutomaticEnv() // Reads the config err := viper.ReadInConfig() if err != nil { log.WithFields( log.Fields{ "error": err.Error(), }, ).Fatal("Fatal error config file") } c.setsConfig() }