1
0

Add config loading tests

This commit is contained in:
2020-10-06 23:30:57 +02:00
parent 009ddd3d16
commit d4635f82ae
6 changed files with 136 additions and 14 deletions
+2 -5
View File
@@ -1,13 +1,10 @@
package starter
import org.koin.core.context.startKoin
import starter.modules.mainModule
import starter.modules.pebbleModule
import starter.modules.routesModule
import starter.modules.templateModule
import starter.modules.*
fun main() {
startKoin {
modules(mainModule, pebbleModule, templateModule, routesModule)
modules(mainModule, pebbleModule, templateModule, configModule, routesModule)
}
}
+7 -6
View File
@@ -1,7 +1,6 @@
package starter.config
import com.electronwill.nightconfig.core.UnmodifiableConfig
import com.electronwill.nightconfig.core.file.FileConfig
import starter.*
import com.electronwill.nightconfig.core.Config as NightConfig
@@ -10,17 +9,19 @@ data class StarterConfig(
val inputs: List<Input>,
)
class Config {
class Config(private val cfg: NightConfig) {
@Suppress("UNCHECKED_CAST")
private fun FileConfig.configMap(key: String) = this.get<NightConfig>(key).valueMap() as Map<String, NightConfig>
private fun NightConfig.configMap(key: String) = this.get<NightConfig>(key)
?.valueMap() as Map<String, NightConfig>?
?: emptyMap()
fun load(): StarterConfig {
val cfg = FileConfig.of("config.toml")
cfg.load()
@Suppress("UNCHECKED_CAST")
val versions = cfg.get<UnmodifiableConfig>("versions").valueMap() as Map<String, String>
val versions = cfg.get<UnmodifiableConfig>("versions")
?.valueMap() as Map<String, String>?
?: emptyMap()
val repositories = cfg.configMap("repositories")
.map { (name, values) ->
@@ -0,0 +1,11 @@
package starter.modules
import com.electronwill.nightconfig.core.file.FileConfig
import org.koin.dsl.module
import starter.config.Config
import com.electronwill.nightconfig.core.Config as NightConfig
val configModule = module {
single<NightConfig> { FileConfig.of("config.toml").apply { load() } }
single { Config(get()).load() }
}
@@ -17,7 +17,6 @@ val mainModule = module {
get<RoutingHttpHandler>().asServer(SunHttp(7000)).start()
} onClose { it?.stop() }
single { Config().load() }
single { LoggerFactory.getLogger("Starter") }
single { Views(get(), get()) }
single { ProjectZip(getAll()) }