Use properties to set rootDir so that ConfigManager can use it

This commit is contained in:
Syer10
2021-04-03 18:12:01 -04:00
parent b2d5354798
commit e043cb5690
4 changed files with 12 additions and 43 deletions
@@ -18,8 +18,6 @@ import java.io.File
* Manages app config.
*/
open class ConfigManager {
private val dataRoot by lazy { AppDirsFactory.getInstance().getUserDataDir("Tachidesk", null, null)!! }
private val generatedModules = mutableMapOf<Class<out ConfigModule>, ConfigModule>()
val config by lazy { loadConfigs() }
@@ -27,8 +25,6 @@ open class ConfigManager {
val loadedModules: Map<Class<out ConfigModule>, ConfigModule>
get() = generatedModules
open val appConfigFile: String = "$dataRoot/server.conf"
val logger = KotlinLogging.logger {}
/**
@@ -51,8 +47,8 @@ open class ConfigManager {
//Load user config
val userConfig =
File(appConfigFile).let{
ConfigFactory.parseFile(it)
File(System.getProperty("ir.armor.tachidesk.rootDir"), "server.conf").let {
ConfigFactory.parseFile(it)
}
val config = ConfigFactory.empty()
@@ -69,7 +65,7 @@ open class ConfigManager {
}
fun registerModule(module: ConfigModule) {
generatedModules.put(module.javaClass, module)
generatedModules[module.javaClass] = module
}
fun registerModules(vararg modules: ConfigModule) {
@@ -37,19 +37,21 @@ class ApplicationDirs(
val mangaRoot = "$dataRoot/manga"
}
val serverConfig: ServerConfig by DI.global.instance()
val serverConfig: ServerConfig by lazy { GlobalConfigManager.module() }
val systemTray by lazy { systemTray() }
val androidCompat by lazy { AndroidCompat() }
fun applicationSetup(rootDir: String? = null, config: Config = GlobalConfigManager.config) {
fun applicationSetup(rootDir: String? = null) {
val dirs = if (rootDir != null) {
ApplicationDirs(rootDir)
} else {
ApplicationDirs()
}
System.setProperty("ir.armor.tachidesk.rootDir", dirs.dataRoot)
// make dirs we need
listOf(
dirs.dataRoot,
@@ -60,10 +62,13 @@ fun applicationSetup(rootDir: String? = null, config: Config = GlobalConfigManag
File(it).mkdirs()
}
GlobalConfigManager.registerModule(
ServerConfig.register(GlobalConfigManager.config)
)
// Application dirs
DI.global.addImport(DI.Module("Server") {
bind<ApplicationDirs>() with singleton { dirs }
bind<ServerConfig>() with singleton { ServerConfig.register(config) }
})
// Load config API
DI.global.addImport(ConfigKodeinModule().create())
@@ -41,7 +41,7 @@ class TestExtensions {
@BeforeAll
fun setup() {
val dataRoot = File("tmp/TestDesk").absolutePath
applicationSetup(dataRoot, loadConfigs(dataRoot))
applicationSetup(dataRoot)
setLoggingEnabled(false)
runBlocking {
extensions = getExtensionList()
@@ -1,40 +1,8 @@
package ir.armor.tachidesk
import ch.qos.logback.classic.Level
import com.typesafe.config.Config
import com.typesafe.config.ConfigFactory
import com.typesafe.config.ConfigRenderOptions
import mu.KotlinLogging
import org.slf4j.Logger
import java.io.File
/**
* Load configs
*/
fun loadConfigs(dataRoot: String): Config {
val logger = KotlinLogging.logger {}
//Load reference configs
val compatConfig = ConfigFactory.parseResources("compat-reference.conf")
val serverConfig = ConfigFactory.parseResources("server-reference.conf")
//Load user config
val userConfig =
File(dataRoot, "server.conf").let {
ConfigFactory.parseFile(it)
}
val config = ConfigFactory.empty()
.withFallback(userConfig)
.withFallback(compatConfig)
.withFallback(serverConfig)
.resolve()
logger.debug {
"Loaded config:\n" + config.root().render(ConfigRenderOptions.concise().setFormatted(true))
}
return config
}
fun setLoggingEnabled(enabled: Boolean = true) {
val logger = (KotlinLogging.logger(Logger.ROOT_LOGGER_NAME).underlyingLogger as ch.qos.logback.classic.Logger)