ntfy-alertmanager/config.go
2022-10-10 01:30:39 +02:00

49 lines
834 B
Go

package main
import (
"fmt"
"git.sr.ht/~emersion/go-scfg"
)
type config struct {
HTTPAddress string
LogLevel string
Topic 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 = "127.0.0.1:8080"
config.LogLevel = "info"
d := cfg.Get("log-level")
if d != nil {
if err := d.ParseParams(&config.LogLevel); 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("topic")
if d == nil {
return nil, fmt.Errorf("%q missing from config", "topic")
}
if err := d.ParseParams(&config.Topic); err != nil {
return nil, err
}
return config, nil
}