refactor: Adjust koin module API
This commit is contained in:
parent
96c85a351e
commit
1a3e8a3335
3 changed files with 17 additions and 8 deletions
|
@ -1,6 +1,7 @@
|
|||
package io.github.null2264.tsukumogami.bot
|
||||
|
||||
import co.touchlab.kermit.Logger
|
||||
import io.github.null2264.tsukumogami.bot.core.di.appModule
|
||||
import io.github.null2264.tsukumogami.bot.core.module.generalModule
|
||||
import io.github.null2264.tsukumogami.core.bot
|
||||
|
||||
|
@ -14,5 +15,7 @@ suspend fun main() {
|
|||
prefixes("src!", "mm!") // mm! for backwards compatibility
|
||||
|
||||
modules(generalModule)
|
||||
|
||||
koinModules(appModule)
|
||||
}.start()
|
||||
}
|
||||
|
|
|
@ -25,8 +25,8 @@ class BotBuilder internal constructor(
|
|||
}
|
||||
}
|
||||
|
||||
internal var beforeKoinSetup: () -> Unit = {}
|
||||
internal var afterKoinSetup: () -> Unit = {}
|
||||
internal var earlyKoinModules = mutableListOf<KoinModule>()
|
||||
internal var koinModules = mutableListOf<KoinModule>()
|
||||
|
||||
fun modules(vararg modules: BotModule) {
|
||||
modules.forEach(bot::addModule)
|
||||
|
@ -36,12 +36,12 @@ class BotBuilder internal constructor(
|
|||
prefixes.forEach(bot::addPrefix)
|
||||
}
|
||||
|
||||
fun beforeKoinSetup(declaration: () -> Unit) {
|
||||
beforeKoinSetup = declaration
|
||||
fun earlyKoinModules(vararg modules: KoinModule) {
|
||||
earlyKoinModules.addAll(modules)
|
||||
}
|
||||
|
||||
fun afterKoinSetup(declaration: () -> Unit) {
|
||||
afterKoinSetup = declaration
|
||||
fun koinModules(vararg modules: KoinModule) {
|
||||
koinModules.addAll(modules)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -54,13 +54,13 @@ suspend fun bot(clazz: KFunction<Bot> = ::Bot, declaration: BotBuilder.() -> Uni
|
|||
val holder = BotBuilder(bot)
|
||||
declaration(holder)
|
||||
|
||||
holder.beforeKoinSetup.invoke()
|
||||
holder.earlyKoinModules.forEach(::loadModule)
|
||||
|
||||
val kord = holder.kordBuilder(holder.token)
|
||||
loadModule { single { kord } bind Kord::class }
|
||||
loadModule { single { bot } bind Bot::class }
|
||||
|
||||
holder.afterKoinSetup.invoke()
|
||||
holder.koinModules.forEach(::loadModule)
|
||||
|
||||
return holder.bot
|
||||
}
|
||||
|
|
|
@ -15,3 +15,9 @@ fun loadModule(
|
|||
|
||||
return moduleObj
|
||||
}
|
||||
|
||||
fun loadModule(module: Module): Module {
|
||||
TsukumogamiKoinContext.loadKoinModules(module)
|
||||
|
||||
return module
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue