New creates a new bare-bones C.
(opts ...CoreOption)
| 157 | |
| 158 | // New creates a new bare-bones C. |
| 159 | func New(opts ...CoreOption) *C { |
| 160 | values := coreValues{ |
| 161 | configStack: []config.ProviderSet{}, |
| 162 | configWatcher: nil, |
| 163 | configProvider: ProvideConfig, |
| 164 | appNameProvider: ProvideAppName, |
| 165 | envProvider: ProvideEnv, |
| 166 | loggerProvider: ProvideLogger, |
| 167 | diProvider: ProvideDi, |
| 168 | eventDispatcherProvider: ProvideEventDispatcher, |
| 169 | } |
| 170 | for _, f := range opts { |
| 171 | f(&values) |
| 172 | } |
| 173 | conf := values.configProvider(values.configStack, values.configWatcher) |
| 174 | env := values.envProvider(conf) |
| 175 | appName := values.appNameProvider(conf) |
| 176 | logger := values.loggerProvider(conf, appName, env) |
| 177 | diContainer := values.diProvider(conf) |
| 178 | dispatcher := values.eventDispatcherProvider(conf) |
| 179 | |
| 180 | c := C{ |
| 181 | AppName: appName, |
| 182 | Env: env, |
| 183 | ConfigAccessor: config.WithAccessor(conf), |
| 184 | LevelLogger: logging.WithLevel(logger), |
| 185 | Container: &container.Container{}, |
| 186 | Dispatcher: dispatcher, |
| 187 | di: diContainer, |
| 188 | baseLogger: logger, |
| 189 | } |
| 190 | return &c |
| 191 | } |
| 192 | |
| 193 | // Default creates a core.C under its default state. Core dependencies are |
| 194 | // already provided, and the config module and serve module are bundled. |