Add config loading tests
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()) }
|
||||
|
||||
Reference in New Issue
Block a user