upgrades and filling of README

This commit is contained in:
2022-12-15 10:26:31 +06:00
parent 2fe4f08059
commit 5af91981f1
11 changed files with 176 additions and 12 deletions

View File

@@ -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(),

View File

@@ -0,0 +1 @@
expect fun stopKoin()

View File

@@ -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
}

View 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)
}
}

View File

@@ -0,0 +1,3 @@
import org.koin.core.context.GlobalContext
actual fun stopKoin() = GlobalContext.stopKoin()

View File

@@ -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}")

View File

@@ -0,0 +1,3 @@
import org.koin.core.context.GlobalContext
actual fun stopKoin() = GlobalContext.stopKoin()