Update to new goprogram version
This commit is contained in:
parent
7bd9570bc0
commit
873fdcd5c2
106 changed files with 478 additions and 825 deletions
|
|
@ -1,75 +1 @@
|
|||
package dis
|
||||
|
||||
import (
|
||||
"github.com/FAU-CDI/wisski-distillery/internal/dis/component"
|
||||
"github.com/tkw1536/pkglib/collection"
|
||||
"github.com/tkw1536/pkglib/lifetime"
|
||||
)
|
||||
|
||||
//
|
||||
// ==== init ====
|
||||
//
|
||||
|
||||
func (dis *Distillery) init() {
|
||||
dis.lifetimeInit.Do(func() {
|
||||
dis.lifetime.Init = component.Init
|
||||
|
||||
lifetime.RegisterGroup[component.Backupable](&dis.lifetime)
|
||||
lifetime.RegisterGroup[component.Snapshotable](&dis.lifetime)
|
||||
lifetime.RegisterGroup[component.DistilleryFetcher](&dis.lifetime)
|
||||
lifetime.RegisterGroup[component.Installable](&dis.lifetime)
|
||||
lifetime.RegisterGroup[component.Provisionable](&dis.lifetime)
|
||||
lifetime.RegisterGroup[component.Routeable](&dis.lifetime)
|
||||
lifetime.RegisterGroup[component.Cronable](&dis.lifetime)
|
||||
lifetime.RegisterGroup[component.UserDeleteHook](&dis.lifetime)
|
||||
lifetime.RegisterGroup[component.Table](&dis.lifetime)
|
||||
lifetime.RegisterGroup[component.Menuable](&dis.lifetime)
|
||||
lifetime.RegisterGroup[component.ScopeProvider](&dis.lifetime)
|
||||
})
|
||||
}
|
||||
|
||||
//
|
||||
// ==== registration ====
|
||||
//
|
||||
|
||||
// manual initializes a component from the provided distillery.
|
||||
func manual[C component.Component](init func(component C)) initFunc {
|
||||
return func(context ctx) component.Component {
|
||||
return lifetime.Make(context, init)
|
||||
}
|
||||
}
|
||||
|
||||
// use is like r, but does not provided additional initialization
|
||||
func auto[C component.Component](context ctx) component.Component {
|
||||
return lifetime.Make[component.Component, C](context, nil)
|
||||
}
|
||||
|
||||
// register returns all components of the distillery
|
||||
func (dis *Distillery) register(context ctx) []component.Component {
|
||||
return collection.MapSlice(
|
||||
dis.allComponents(),
|
||||
func(f initFunc) component.Component {
|
||||
return f(context)
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
// ctx is a context for component initialization
|
||||
type ctx = *lifetime.InjectorContext[component.Component]
|
||||
|
||||
//
|
||||
// ==== export ====
|
||||
//
|
||||
|
||||
// export is a convenience function to export a single component
|
||||
func export[C component.Component](dis *Distillery) C {
|
||||
dis.init()
|
||||
return lifetime.ExportComponent[component.Component, component.Still, C](&dis.lifetime, dis.Still, dis.register)
|
||||
}
|
||||
|
||||
func exportAll[C component.Component](dis *Distillery) []C {
|
||||
dis.init()
|
||||
return lifetime.ExportComponents[component.Component, component.Still, C](&dis.lifetime, dis.Still, dis.register)
|
||||
}
|
||||
|
||||
type initFunc = func(context ctx) component.Component
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue