36 lines
1.1 KiB
Kotlin
36 lines
1.1 KiB
Kotlin
package dev.inmo.postssystem.server
|
|
|
|
import dev.inmo.postssystem.features.common.server.ServerModuleLoader
|
|
import kotlinx.serialization.SerialName
|
|
import kotlinx.serialization.Serializable
|
|
import java.io.File
|
|
|
|
@Serializable
|
|
data class Config(
|
|
val host: String = "0.0.0.0",
|
|
val port: Int = 8080,
|
|
@SerialName("database")
|
|
val databaseConfig: DatabaseConfig = DatabaseConfig(),
|
|
@SerialName("auth")
|
|
val authConfig: AuthConfig = AuthConfig(),
|
|
val filesFolder: String,
|
|
@SerialName("modules")
|
|
val modulesClassPaths: List<String>,
|
|
val debugMode: Boolean = false
|
|
) {
|
|
val filesFolderFile: File
|
|
get() = File(filesFolder)
|
|
|
|
@kotlinx.serialization.Transient
|
|
val modules by lazy {
|
|
modulesClassPaths.mapNotNull { moduleClassPath ->
|
|
runCatching {
|
|
Class.forName(moduleClassPath).constructors.firstOrNull { it.parameterCount == 0 } ?.newInstance() as ServerModuleLoader
|
|
}.onFailure {
|
|
println("Unable to load $moduleClassPath")
|
|
it.printStackTrace()
|
|
}.getOrNull()
|
|
}
|
|
}
|
|
}
|