about summary refs log tree commit diff
path: root/src/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.go')
-rw-r--r--src/main.go67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/main.go b/src/main.go
new file mode 100644
index 0000000..6a1a118
--- /dev/null
+++ b/src/main.go
@@ -0,0 +1,67 @@
+package main
+
+import (
+	"fmt"
+	"log"
+	"net/http"
+	"strings"
+
+	"git.darknebu.la/emile/corona-metrics/src/structs"
+	"github.com/sirupsen/logrus"
+	"github.com/spf13/viper"
+)
+
+func main() {
+	initConfig()
+	initLogging()
+
+	go ExitHandler()
+
+	http.Serve()
+}
+
+// initialize the config (config.yml)
+func initConfig() {
+	// parse the config
+	viper.SetConfigName("config")
+	viper.AddConfigPath(".")
+	viper.AutomaticEnv()
+
+	// Fix nested keys don't work with .
+	viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
+
+	// read the config
+	err := viper.ReadInConfig()
+	if err != nil {
+		panic(fmt.Errorf("Fatal error config file: %s", err))
+	}
+
+	// unmarshal the config
+	var conf structs.Configuration
+	err = viper.Unmarshal(&conf)
+	if err != nil {
+		log.Fatalf("unable to decode into struct, %v", err)
+	}
+}
+
+// Initialize the loglevel using the value given in the config
+func initLogging() {
+
+	switch viper.GetString("verbose.level") {
+	case "1":
+		logrus.SetLevel(logrus.PanicLevel)
+	case "2":
+		logrus.SetLevel(logrus.FatalLevel)
+	case "3":
+		logrus.SetLevel(logrus.ErrorLevel)
+	case "4":
+		logrus.SetLevel(logrus.WarnLevel)
+	case "5":
+		logrus.SetLevel(logrus.InfoLevel)
+	case "6":
+		logrus.SetLevel(logrus.DebugLevel)
+	case "7":
+		logrus.SetLevel(logrus.TraceLevel)
+	}
+
+}