package main import ( "context" "errors" "log/slog" "net/http" "os" "os/signal" "syscall" "github.com/tim/md-hub-secure/apps/server/internal/app" "github.com/tim/md-hub-secure/apps/server/internal/config" "github.com/tim/md-hub-secure/apps/server/internal/logging" ) func main() { cfg, err := config.Load() if err != nil { slog.Error("load config", "error", err) os.Exit(1) } logger := logging.New(cfg.LogLevel) ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM) defer stop() application, err := app.New(ctx, cfg, logger) if err != nil { logger.Error("initialize application", "error", err) os.Exit(1) } defer func() { if closeErr := application.Close(); closeErr != nil { logger.Error("close application", "error", closeErr) } }() err = application.Run(ctx) if err != nil && !errors.Is(err, http.ErrServerClosed) { logger.Error("run application", "error", err) os.Exit(1) } }