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

View File

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