load dependencies by name instead of reference

This commit is contained in:
Elijah Duffy
2025-05-30 16:18:21 -07:00
parent 8d8c1e5672
commit fc41a6ee5b
2 changed files with 24 additions and 13 deletions

View File

@@ -12,7 +12,7 @@ type Module struct {
name string
setup setupFn
teardown teardownFn
depends []*Module
depends []string
}
// ModuleOpts contains user-exposed options when defining a module.
@@ -21,8 +21,9 @@ type ModuleOpts struct {
Setup setupFn
// Teardown is the teardown function for the module.
Teardown teardownFn
// Depends is a list of modules that this module depends on.
Depends []*Module
// Depends is a list of modules that this module depends on. Each entry must
// be the exact name of a module registered in the lifecycle.
Depends []string
}
// NewModule creates a new Module instance with the given name and options.
@@ -38,7 +39,7 @@ func NewModule(name string, opts ModuleOpts) *Module {
// Logger returns the logger for the module.
func (s *Module) Logger() *slog.Logger {
if s.logger == nil {
panic(fmt.Sprintf("subsytem %s used before logger was initialized", s.name))
panic(fmt.Sprintf("module %s used before logger was initialized", s.name))
}
return s.logger
}
@@ -47,8 +48,3 @@ func (s *Module) Logger() *slog.Logger {
func (s *Module) Name() string {
return s.name
}
// ModuleList is a convenience function that creates a slice of modules.
func ModuleList(modules ...*Module) []*Module {
return modules
}