mirror of
https://github.com/caddyserver/caddy.git
synced 2025-05-25 20:29:59 +08:00
context: AppIfConfigured returns error; consider not-yet-provisioned modules (#6292)
* context: Add new `AppStrict()` method to avoid instantiating empty apps * Rename AppStrict -> AppIfConfigured --------- Co-authored-by: Matthew Holt <mholt@users.noreply.github.com>
This commit is contained in:
29
context.go
29
context.go
@ -453,23 +453,20 @@ func (ctx Context) App(name string) (any, error) {
|
||||
return modVal, nil
|
||||
}
|
||||
|
||||
// AppIfConfigured returns an app by its name if it has been
|
||||
// configured. Can be called instead of App() to avoid
|
||||
// instantiating an empty app when that's not desirable. If
|
||||
// the app has not been loaded, nil is returned.
|
||||
//
|
||||
// We return any type instead of the App type because it is not
|
||||
// intended for the caller of this method to be the one to start
|
||||
// or stop App modules. The caller is expected to assert to the
|
||||
// concrete type.
|
||||
func (ctx Context) AppIfConfigured(name string) any {
|
||||
if ctx.cfg == nil {
|
||||
// this can happen if the currently-active context
|
||||
// is being accessed, but no config has successfully
|
||||
// been loaded yet
|
||||
return nil
|
||||
// AppIfConfigured is like App, but it returns an error if the
|
||||
// app has not been configured. This is useful when the app is
|
||||
// required and its absence is a configuration error, or when
|
||||
// the app is optional and you don't want to instantiate a
|
||||
// new one that hasn't been explicitly configured.
|
||||
func (ctx Context) AppIfConfigured(name string) (any, error) {
|
||||
if app, ok := ctx.cfg.apps[name]; ok {
|
||||
return app, nil
|
||||
}
|
||||
return ctx.cfg.apps[name]
|
||||
appRaw := ctx.cfg.AppsRaw[name]
|
||||
if appRaw == nil {
|
||||
return nil, fmt.Errorf("app module %s is not configured", name)
|
||||
}
|
||||
return ctx.App(name)
|
||||
}
|
||||
|
||||
// Storage returns the configured Caddy storage implementation.
|
||||
|
Reference in New Issue
Block a user