package main import ( "log/slog" "os" "bunker/commons" "bunker/server/internal/application" "bunker/server/internal/services/core/database" "bunker/server/internal/services/core/httpserver" "bunker/server/internal/services/core/options" ) func main() { app := application.New() lgr := app.NewLogger("module", "main") lgr.Info( "Starting bunkerd...", "version", commons.Version, "build_no", commons.Build, "buint_on", commons.BuildDate, "commit", commons.Commit, "branch", commons.Branch, ) if err := app.Start(); err != nil { lgr.Error("Failed to start bunkerd!", "error", err.Error()) os.Exit(1) } checkError(lgr, database.Initialize(app)) checkError(lgr, options.Initialize(app)) checkError(lgr, httpserver.Initialize(app)) if err := app.Start(); err != nil { lgr.Error("Failed to start bunkerd", "error", err.Error()) os.Exit(2) } lgr.Info("bunkerd started.") <-app.ShutdownChan() lgr.Info("Shutting down bunkerd...") if err := app.Shutdown(); err != nil { lgr.Error("Failed to shutdown bunkerd!", "error", err.Error()) os.Exit(1) } } func checkError(logger *slog.Logger, err error) { if err == nil { return } logger.Error("Failed to initialize bunkerd.", "error", err.Error()) os.Exit(2) }