package main import ( "context" "fmt" "os" "os/signal" "syscall" "galaxy/user/internal/app" "galaxy/user/internal/config" "galaxy/user/internal/logging" ) func main() { if err := run(); err != nil { _, _ = fmt.Fprintf(os.Stderr, "userservice: %v\n", err) os.Exit(1) } } func run() error { cfg, err := config.LoadFromEnv() if err != nil { return err } logger, err := logging.New(cfg.Logging.Level) if err != nil { return err } rootCtx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM) defer stop() runtime, err := app.NewRuntime(rootCtx, cfg, logger) if err != nil { return err } defer func() { _ = runtime.Close() }() return runtime.Run(rootCtx) }