load dependencies by name instead of reference
This commit is contained in:
23
lifecycle.go
23
lifecycle.go
@@ -163,13 +163,18 @@ func (app *Lifecycle) setupSingle(sub *Module, logger *slog.Logger) (bool, error
|
||||
|
||||
// Check if all dependencies are satisfied
|
||||
for _, dep := range sub.depends {
|
||||
if _, ok := app.setupTracker[dep.name]; !ok {
|
||||
if _, ok := app.setupTracker[dep]; !ok {
|
||||
if app.opts.DisableAutoload {
|
||||
return false, fmt.Errorf("dependency '%s' not satisfied for '%s'", dep.name, sub.name)
|
||||
return false, fmt.Errorf("dependency '%s' not satisfied for '%s'", dep, sub.name)
|
||||
} else {
|
||||
// Attempt to set up the dependency
|
||||
if _, err := app.setupSingle(dep, logger); err != nil {
|
||||
return false, fmt.Errorf("error setting up dependency '%s' for '%s': %w", dep.name, sub.name, err)
|
||||
mod, err := app.getModuleByName(dep)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
if _, err := app.setupSingle(mod, logger); err != nil {
|
||||
return false, fmt.Errorf("error setting up dependency '%s' for '%s': %w", dep, sub.name, err)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -213,6 +218,16 @@ func (app *Lifecycle) singleTeardown(sub *Module) (bool, error) {
|
||||
return false, nil
|
||||
}
|
||||
|
||||
// getModuleByName retrieves a module by its name from the lifecycle.
|
||||
func (app *Lifecycle) getModuleByName(name string) (*Module, error) {
|
||||
for _, sub := range app.modules {
|
||||
if sub.name == name {
|
||||
return sub, nil
|
||||
}
|
||||
}
|
||||
return nil, fmt.Errorf("module '%s' not found", name)
|
||||
}
|
||||
|
||||
// mapToString converts a map to an opinionated string representation.
|
||||
func mapToString(m map[string]bool) string {
|
||||
if len(m) == 0 {
|
||||
|
||||
Reference in New Issue
Block a user