diff --git a/AndroidCompat/Config/src/main/java/xyz/nulldev/ts/config/ConfigManager.kt b/AndroidCompat/Config/src/main/java/xyz/nulldev/ts/config/ConfigManager.kt index c22d7d4..f1e941d 100644 --- a/AndroidCompat/Config/src/main/java/xyz/nulldev/ts/config/ConfigManager.kt +++ b/AndroidCompat/Config/src/main/java/xyz/nulldev/ts/config/ConfigManager.kt @@ -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) } diff --git a/AndroidCompat/Config/src/main/java/xyz/nulldev/ts/config/RootDir.kt b/AndroidCompat/Config/src/main/java/xyz/nulldev/ts/config/RootDir.kt new file mode 100644 index 0000000..ccfdd87 --- /dev/null +++ b/AndroidCompat/Config/src/main/java/xyz/nulldev/ts/config/RootDir.kt @@ -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) + ) +} \ No newline at end of file diff --git a/server/src/main/kotlin/ir/armor/tachidesk/server/ServerSetup.kt b/server/src/main/kotlin/ir/armor/tachidesk/server/ServerSetup.kt index 516b541..1d9a271 100644 --- a/server/src/main/kotlin/ir/armor/tachidesk/server/ServerSetup.kt +++ b/server/src/main/kotlin/ir/armor/tachidesk/server/ServerSetup.kt @@ -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() 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() 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 -> diff --git a/server/src/test/kotlin/ir/armor/tachidesk/TestExtensions.kt b/server/src/test/kotlin/ir/armor/tachidesk/TestExtensions.kt index 500309e..716d042 100644 --- a/server/src/test/kotlin/ir/armor/tachidesk/TestExtensions.kt +++ b/server/src/test/kotlin/ir/armor/tachidesk/TestExtensions.kt @@ -44,6 +44,7 @@ class TestExtensions { System.setProperty("ir.armor.tachidesk.rootDir", dataRoot) applicationSetup() setLoggingEnabled(false) + runBlocking { extensions = getExtensionList() extensions.forEach {