// Fantasy World Zookeeper Bot // Copyright (c) 2018 Vladimir "fat0troll" Hodakov package main import ( "source.hodakov.me/fat0troll/fwzookeeper/context" "source.hodakov.me/fat0troll/fwzookeeper/domains/battles/v1" "source.hodakov.me/fat0troll/fwzookeeper/domains/commands/v1" "source.hodakov.me/fat0troll/fwzookeeper/internal/router" "source.hodakov.me/fat0troll/fwzookeeper/internal/telegram" "os" "os/signal" "runtime" "syscall" ) func main() { // Before any real work - lock to OS thread. We shouldn't leave it until // shutdown runtime.LockOSThread() // Initializing context c := context.NewContext() c.Init() c.InitConfiguration() router.New(c) commandsv1.New(c) battlesv1.New(c) telegram.New(c) // CTRL+C handler. interrupt := make(chan os.Signal, 1) signal.Notify(interrupt) shutdownDone := make(chan bool, 1) go func() { signalThing := <-interrupt if signalThing == syscall.SIGTERM || signalThing == syscall.SIGINT { c.Logger.Info().Msg("Got " + signalThing.String() + " signal, shutting down...") shutdownDone <- true } }() <-shutdownDone os.Exit(0) }