Better way of setting it maybe?

This commit is contained in:
Aria Moradi 2021-04-04 03:23:50 +04:30
parent 5171e509a5
commit 7a52e19235
4 changed files with 31 additions and 23 deletions

View File

@ -11,7 +11,6 @@ import com.typesafe.config.Config
import com.typesafe.config.ConfigFactory
import com.typesafe.config.ConfigRenderOptions
import mu.KotlinLogging
import net.harawata.appdirs.AppDirsFactory
import java.io.File
/**
@ -47,7 +46,7 @@ open class ConfigManager {
//Load user config
val userConfig =
File(System.getProperty("ir.armor.tachidesk.rootDir"), "server.conf").let {
File(tachideskRootDir(), "server.conf").let {
ConfigFactory.parseFile(it)
}

View File

@ -0,0 +1,17 @@
package xyz.nulldev.ts.config
import net.harawata.appdirs.AppDirsFactory
/*
* Copyright (C) Contributors to the Suwayomi project
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
fun tachideskRootDir(): String {
return System.getProperty(
"ir.armor.tachidesk.rootDir",
AppDirsFactory.getInstance().getUserDataDir("Tachidesk", null, null)
)
}

View File

@ -8,29 +8,27 @@ package ir.armor.tachidesk.server
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
import ch.qos.logback.classic.Level
import com.typesafe.config.Config
import eu.kanade.tachiyomi.App
import ir.armor.tachidesk.Main
import ir.armor.tachidesk.model.dataclass.makeDataBaseTables
import ir.armor.tachidesk.server.util.systemTray
import mu.KotlinLogging
import net.harawata.appdirs.AppDirsFactory
import org.kodein.di.DI
import org.kodein.di.bind
import org.kodein.di.conf.global
import org.kodein.di.instance
import org.kodein.di.singleton
import org.slf4j.Logger
import xyz.nulldev.androidcompat.AndroidCompat
import xyz.nulldev.androidcompat.AndroidCompatInitializer
import xyz.nulldev.ts.config.ConfigKodeinModule
import xyz.nulldev.ts.config.GlobalConfigManager
import xyz.nulldev.ts.config.tachideskRootDir
import java.io.File
private val logger = KotlinLogging.logger {}
class ApplicationDirs(
val dataRoot: String = AppDirsFactory.getInstance().getUserDataDir("Tachidesk", null, null)
val dataRoot: String = tachideskRootDir()
) {
val extensionsRoot = "$dataRoot/extensions"
val thumbnailsRoot = "$dataRoot/thumbnails"
@ -44,21 +42,18 @@ val systemTray by lazy { systemTray() }
val androidCompat by lazy { AndroidCompat() }
fun applicationSetup() {
val rootDir: String? = System.getProperty("ir.armor.tachidesk.rootDir")
val dirs = if (rootDir != null) {
ApplicationDirs(rootDir)
} else {
ApplicationDirs().also {
System.setProperty("ir.armor.tachidesk.rootDir", it.dataRoot)
}
}
// Application dirs
val applicationDirs = ApplicationDirs()
DI.global.addImport(DI.Module("Server") {
bind<ApplicationDirs>() with singleton { applicationDirs }
})
// make dirs we need
listOf(
dirs.dataRoot,
dirs.extensionsRoot,
dirs.extensionsRoot + "/icon",
dirs.thumbnailsRoot
applicationDirs.dataRoot,
applicationDirs.extensionsRoot,
applicationDirs.extensionsRoot + "/icon",
applicationDirs.thumbnailsRoot
).forEach {
File(it).mkdirs()
}
@ -67,10 +62,6 @@ fun applicationSetup() {
ServerConfig.register(GlobalConfigManager.config)
)
// Application dirs
DI.global.addImport(DI.Module("Server") {
bind<ApplicationDirs>() with singleton { dirs }
})
// Load config API
DI.global.addImport(ConfigKodeinModule().create())
// Load Android compatibility dependencies
@ -85,7 +76,7 @@ fun applicationSetup() {
// create conf file if doesn't exist
try {
val dataConfFile = File("${dirs.dataRoot}/server.conf")
val dataConfFile = File("${applicationDirs.dataRoot}/server.conf")
if (!dataConfFile.exists()) {
Main::class.java.getResourceAsStream("/server-reference.conf").use { input ->
dataConfFile.outputStream().use { output ->

View File

@ -44,6 +44,7 @@ class TestExtensions {
System.setProperty("ir.armor.tachidesk.rootDir", dataRoot)
applicationSetup()
setLoggingEnabled(false)
runBlocking {
extensions = getExtensionList()
extensions.forEach {