// Code generated by go-omni project. DO NOT EDIT. package svc import ( "context" "errors" "example.com/program/internal/config" "fmt" "git.yuntuo.hk/k2safe/go-omni/lifecycle" "git.yuntuo.hk/k2safe/go-omni/logx" ) func New(ctx context.Context, logger *logx.Logger, cfg config.Config) (result *ServiceContext, err error) { if ctx == nil { ctx = context.Background() } if err = ctx.Err(); err != nil { return nil, errors.Join(err, lifecycle.Cause(ctx)) } if logger == nil { return nil, errors.New("service context requires a logger") } if err = cfg.Validate(); err != nil { return nil, err } runtime, err := lifecycle.NewRuntimeWithConfig(logx.WithLogger(ctx, logger), cfg.Lifecycle) if err != nil { return nil, err } c := &ServiceContext{Runtime: runtime, Config: cfg, Logger: logger} defer func() { if p := recover(); p != nil { err = fmt.Errorf("dependency initialization panic: %v", p) } if err != nil { result = nil err = c.Finish(err) } }() if err = c.Init(c.Context()); err != nil { return nil, err } return c, nil }