@@ 0,0 1,58 @@
+package main
+
+import (
+ "fmt"
+
+ "git.sr.ht/~emersion/go-scfg"
+)
+
+type config struct {
+ httpAddress string
+ faceitBearer string
+ logLevel string
+ logFormat string
+}
+
+func readConfig(path string) (*config, error) {
+ cfg, err := scfg.Load(path)
+ if err != nil {
+ return nil, err
+ }
+
+ config := new(config)
+ // Set default values
+ config.httpAddress = ":8080"
+ config.logLevel = "info"
+ config.logFormat = "text"
+
+ d := cfg.Get("log-level")
+ if d != nil {
+ if err := d.ParseParams(&config.logLevel); err != nil {
+ return nil, err
+ }
+ }
+
+ d = cfg.Get("log-format")
+ if d != nil {
+ if err := d.ParseParams(&config.logFormat); err != nil {
+ return nil, err
+ }
+ }
+
+ d = cfg.Get("http-address")
+ if d != nil {
+ if err := d.ParseParams(&config.httpAddress); err != nil {
+ return nil, err
+ }
+ }
+
+ d = cfg.Get("faceit-bearer")
+ if d == nil {
+ return nil, fmt.Errorf("%q missing", "faceit-bearer")
+ }
+ if err := d.ParseParams(&config.faceitBearer); err != nil {
+ return nil, err
+ }
+
+ return config, nil
+}