Stanislav N. aka pztrn 2c13e3f380
Some checks failed
Linting and tests / Linting (push) Failing after 37s
Basic server app with WS connection.
2025-09-15 09:33:25 +05:00

64 lines
1.2 KiB
Go

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)
}