Some checks failed
Linting and tests / Linting (push) Failing after 37s
64 lines
1.2 KiB
Go
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)
|
|
}
|