mirror of
https://github.com/InsanusMokrassar/MicroUtils.git
synced 2025-09-15 21:39:24 +00:00
upgrades and filling of README
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
import dev.inmo.micro_utils.coroutines.launchSynchronously
|
||||
import dev.inmo.micro_utils.startup.launcher.Config
|
||||
import dev.inmo.micro_utils.startup.launcher.HelloWorldPlugin
|
||||
import dev.inmo.micro_utils.startup.launcher.defaultJson
|
||||
@@ -6,16 +5,15 @@ import dev.inmo.micro_utils.startup.launcher.start
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.test.runTest
|
||||
import kotlinx.serialization.json.jsonObject
|
||||
import org.koin.core.context.GlobalContext
|
||||
import kotlin.test.BeforeTest
|
||||
import kotlin.test.Test
|
||||
|
||||
class StartupLaunchingTests {
|
||||
@BeforeTest
|
||||
fun resetGlobalKoinContext() {
|
||||
kotlin.runCatching { GlobalContext.stopKoin() }
|
||||
runCatching { stopKoin() }
|
||||
}
|
||||
@Test(timeout = 60000L)
|
||||
@Test
|
||||
fun CheckThatEmptyPluginsListLeadsToEndOfMain() {
|
||||
val emptyJson = defaultJson.encodeToJsonElement(
|
||||
Config.serializer(),
|
||||
@@ -29,7 +27,7 @@ class StartupLaunchingTests {
|
||||
job.join()
|
||||
}
|
||||
}
|
||||
@Test(timeout = 60000L)
|
||||
@Test
|
||||
fun CheckThatHelloWorldPluginsListLeadsToEndOfMain() {
|
||||
val emptyJson = defaultJson.encodeToJsonElement(
|
||||
Config.serializer(),
|
1
startup/launcher/src/commonTest/kotlin/StopKoin.kt
Normal file
1
startup/launcher/src/commonTest/kotlin/StopKoin.kt
Normal file
@@ -0,0 +1 @@
|
||||
expect fun stopKoin()
|
@@ -0,0 +1,14 @@
|
||||
package dev.inmo.micro_utils.startup.launcher
|
||||
|
||||
import dev.inmo.micro_utils.startup.plugin.StartPlugin
|
||||
import dev.inmo.micro_utils.startup.plugin.StartPluginSerializer
|
||||
|
||||
/**
|
||||
* Creates [T] using [block], register it in [StartPluginSerializer] using its [StartPluginSerializer.registerPlugin]
|
||||
* and returns created by [block] plugin
|
||||
*/
|
||||
inline fun <T : StartPlugin> createStartupPluginAndRegister(name: String, block: () -> T): T {
|
||||
val plugin = block()
|
||||
StartPluginSerializer.registerPlugin(name, plugin)
|
||||
return plugin
|
||||
}
|
33
startup/launcher/src/jsMain/kotlin/PluginsStarter.kt
Normal file
33
startup/launcher/src/jsMain/kotlin/PluginsStarter.kt
Normal file
@@ -0,0 +1,33 @@
|
||||
package dev.inmo.micro_utils.startup.launcher
|
||||
|
||||
import dev.inmo.kslog.common.KSLog
|
||||
import dev.inmo.kslog.common.i
|
||||
import kotlinx.serialization.json.JsonObject
|
||||
import kotlinx.serialization.json.jsonObject
|
||||
|
||||
object PluginsStarter {
|
||||
init {
|
||||
KSLog.default = KSLog("Launcher")
|
||||
}
|
||||
|
||||
/**
|
||||
* It is expected that you have registered all the [dev.inmo.micro_utils.startup.plugin.StartPlugin]s of your JS
|
||||
* app inside of [dev.inmo.micro_utils.startup.plugin.StartPluginSerializer] using its
|
||||
* [dev.inmo.micro_utils.startup.plugin.StartPluginSerializer.registerPlugin] method
|
||||
*/
|
||||
suspend fun startPlugins(json: JsonObject) {
|
||||
start(json)
|
||||
}
|
||||
/**
|
||||
* Will convert [config] to [JsonObject] with auto registration of [dev.inmo.micro_utils.startup.plugin.StartPlugin]s
|
||||
* in [dev.inmo.micro_utils.startup.plugin.StartPluginSerializer]
|
||||
*/
|
||||
suspend fun startPlugins(config: Config) {
|
||||
|
||||
KSLog.i("Start convert config to JSON")
|
||||
val json = defaultJson.encodeToJsonElement(Config.serializer(), config).jsonObject
|
||||
KSLog.i("Config has been read")
|
||||
|
||||
start(json)
|
||||
}
|
||||
}
|
3
startup/launcher/src/jsTest/kotlin/stopKoin.kt
Normal file
3
startup/launcher/src/jsTest/kotlin/stopKoin.kt
Normal file
@@ -0,0 +1,3 @@
|
||||
import org.koin.core.context.GlobalContext
|
||||
|
||||
actual fun stopKoin() = GlobalContext.stopKoin()
|
@@ -26,7 +26,7 @@ import java.io.File
|
||||
*/
|
||||
suspend fun main(args: Array<String>) {
|
||||
|
||||
KSLog.default = KSLog("ServerLauncher")
|
||||
KSLog.default = KSLog("Launcher")
|
||||
val (configPath) = args
|
||||
val file = File(configPath)
|
||||
KSLog.i("Start read config from ${file.absolutePath}")
|
||||
|
3
startup/launcher/src/jvmTest/kotlin/stopKoin.kt
Normal file
3
startup/launcher/src/jvmTest/kotlin/stopKoin.kt
Normal file
@@ -0,0 +1,3 @@
|
||||
import org.koin.core.context.GlobalContext
|
||||
|
||||
actual fun stopKoin() = GlobalContext.stopKoin()
|
Reference in New Issue
Block a user