28 lines
859 B
Go
28 lines
859 B
Go
|
|
// Package launcher orchestrates the application lifecycle.
|
||
|
|
//
|
||
|
|
// A Launcher manages infrastructure components through three ordered phases:
|
||
|
|
//
|
||
|
|
// 1. OnInit — all components initialize in registration order
|
||
|
|
// 2. BeforeStart hooks — dependency injection wiring runs
|
||
|
|
// 3. OnStart — all components start in registration order
|
||
|
|
//
|
||
|
|
// On shutdown (OS signal or programmatic Shutdown call), OnStop is called for
|
||
|
|
// every component in reverse registration order, ensuring dependents stop
|
||
|
|
// before their dependencies.
|
||
|
|
//
|
||
|
|
// Usage:
|
||
|
|
//
|
||
|
|
// logger := logz.New(logz.Options{JSON: true})
|
||
|
|
// lc := launcher.New(logger)
|
||
|
|
//
|
||
|
|
// lc.Append(db, cache, server)
|
||
|
|
// lc.BeforeStart(func() error {
|
||
|
|
// return server.RegisterRoutes(db, cache)
|
||
|
|
// })
|
||
|
|
//
|
||
|
|
// if err := lc.Run(); err != nil {
|
||
|
|
// logger.Error("launcher failed", err)
|
||
|
|
// os.Exit(1)
|
||
|
|
// }
|
||
|
|
package launcher
|