This commit removes various modules that can be migrated to the github.com/tkw1536/pkglib package without any code changes (beyond module renamings).
66 lines
1.8 KiB
Go
66 lines
1.8 KiB
Go
package wisski
|
|
|
|
import (
|
|
"github.com/FAU-CDI/wisski-distillery/internal/wisski/ingredient"
|
|
"github.com/FAU-CDI/wisski-distillery/internal/wisski/liquid"
|
|
"github.com/FAU-CDI/wisski-distillery/pkg/lazy"
|
|
"github.com/tkw1536/pkglib/collection"
|
|
)
|
|
|
|
//
|
|
// ==== init ====
|
|
//
|
|
|
|
func (wisski *WissKI) init() {
|
|
wisski.poolInit.Do(func() {
|
|
wisski.pool.Init = ingredient.Init
|
|
lazy.RegisterPoolGroup[ingredient.WissKIFetcher](&wisski.pool)
|
|
})
|
|
}
|
|
|
|
//
|
|
// ==== registration ====
|
|
//
|
|
|
|
// manual initializes a component from the provided distillery.
|
|
func manual[I ingredient.Ingredient](init func(ingredient I)) initFunc {
|
|
return func(context ctx) ingredient.Ingredient {
|
|
return lazy.Make(context, init)
|
|
}
|
|
}
|
|
|
|
// use is like r, but does not provided additional initialization
|
|
func auto[I ingredient.Ingredient](context ctx) ingredient.Ingredient {
|
|
return lazy.Make[ingredient.Ingredient, I](context, nil)
|
|
}
|
|
|
|
// register returns all components of the distillery
|
|
func (wisski *WissKI) register(context ctx) []ingredient.Ingredient {
|
|
return collection.MapSlice(
|
|
wisski.allIngredients(),
|
|
func(f initFunc) ingredient.Ingredient {
|
|
return f(context)
|
|
},
|
|
)
|
|
}
|
|
|
|
// ctx is a context for component initialization
|
|
type ctx = *lazy.PoolContext[ingredient.Ingredient]
|
|
|
|
//
|
|
// ==== export ====
|
|
//
|
|
|
|
// export is a convenience function to export a single component
|
|
func export[I ingredient.Ingredient](wisski *WissKI) I {
|
|
wisski.init()
|
|
return lazy.ExportComponent[ingredient.Ingredient, *liquid.Liquid, I](&wisski.pool, &wisski.Liquid, wisski.register)
|
|
}
|
|
|
|
//lint:ignore U1000 for future use
|
|
func exportAll[I ingredient.Ingredient](wisski *WissKI) []I {
|
|
wisski.init()
|
|
return lazy.ExportComponents[ingredient.Ingredient, *liquid.Liquid, I](&wisski.pool, &wisski.Liquid, wisski.register)
|
|
}
|
|
|
|
type initFunc = func(context ctx) ingredient.Ingredient
|