summaryrefslogtreecommitdiff
path: root/config.go
diff options
context:
space:
mode:
Diffstat (limited to 'config.go')
-rw-r--r--config.go54
1 files changed, 54 insertions, 0 deletions
diff --git a/config.go b/config.go
new file mode 100644
index 0000000..f877eba
--- /dev/null
+++ b/config.go
@@ -0,0 +1,54 @@
+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()
+}