42 lines
891 B
Go
42 lines
891 B
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
|
|
"git.ctrlz.es/mgdelacroix/birthdaybot/model"
|
|
"git.ctrlz.es/mgdelacroix/birthdaybot/server"
|
|
"github.com/charmbracelet/log"
|
|
)
|
|
|
|
func main() {
|
|
configFlag := flag.String("config", "birthdaybot.yml", "path to the configuration file")
|
|
flag.Parse()
|
|
|
|
config, err := model.ReadConfig(*configFlag)
|
|
if err != nil {
|
|
log.Error("error reading config", "configPath", *configFlag, "error", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
if err := config.IsValid(); err != nil {
|
|
log.Error("invalid config", "configPath", *configFlag, "error", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
srv, err := server.New(config)
|
|
if err != nil {
|
|
log.Error("error creating server", "error", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
c := make(chan os.Signal, 1)
|
|
signal.Notify(c, syscall.SIGINT, syscall.SIGTERM)
|
|
|
|
srv.Start()
|
|
s := <-c
|
|
srv.Logger.Info("received signal, stopping", "signal", s)
|
|
srv.Stop()
|
|
}
|