Copy Tachidesk Server to user folder from resources to run from

This commit is contained in:
Syer10
2021-03-25 01:20:38 -04:00
parent 0a244128e4
commit 5352ca6e71
3 changed files with 38 additions and 1 deletions

View File

@@ -42,6 +42,9 @@ dependencies {
//implementation("org.fusesource.jansi:jansi:1.18") //implementation("org.fusesource.jansi:jansi:1.18")
implementation("io.github.microutils:kotlin-logging:2.0.5") implementation("io.github.microutils:kotlin-logging:2.0.5")
// User storage
implementation("net.harawata:appdirs:1.2.1")
// Preferences // Preferences
val multiplatformSettingsVersion = "0.7.4" val multiplatformSettingsVersion = "0.7.4"
implementation("com.russhwolf:multiplatform-settings-jvm:$multiplatformSettingsVersion") implementation("com.russhwolf:multiplatform-settings-jvm:$multiplatformSettingsVersion")

View File

@@ -22,18 +22,31 @@ import ca.gosyer.ui.extensions.openExtensionsMenu
import ca.gosyer.ui.library.openLibraryMenu import ca.gosyer.ui.library.openLibraryMenu
import ca.gosyer.ui.sources.openSourcesMenu import ca.gosyer.ui.sources.openSourcesMenu
import ca.gosyer.util.compose.ThemedWindow import ca.gosyer.util.compose.ThemedWindow
import ca.gosyer.util.system.userDataDir
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import mu.KotlinLogging import mu.KotlinLogging
import org.koin.core.context.startKoin import org.koin.core.context.startKoin
import kotlin.concurrent.thread import kotlin.concurrent.thread
import java.io.File
fun main() { fun main() {
GlobalScope.launch { GlobalScope.launch {
val logger = KotlinLogging.logger("Server") val logger = KotlinLogging.logger("Server")
val runtime = Runtime.getRuntime() val runtime = Runtime.getRuntime()
val process = runtime.exec("java -jar resources/Tachidesk.jar") val jarFile = File(userDataDir,"Tachidesk.jar")
if (!jarFile.exists()) {
logger.info { "Copying server to resources" }
javaClass.getResourceAsStream("/Tachidesk.jar").buffered().use { input ->
jarFile.outputStream().use { output ->
input.copyTo(output)
}
}
}
logger.info { "Starting server" }
val process = runtime.exec("""java -jar "${jarFile.absolutePath}"""")
runtime.addShutdownHook(thread(start = false) { runtime.addShutdownHook(thread(start = false) {
process?.destroy() process?.destroy()
}) })

View File

@@ -0,0 +1,21 @@
/*
* 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/.
*/
package ca.gosyer.util.system
import net.harawata.appdirs.AppDirs
import net.harawata.appdirs.AppDirsFactory
import java.io.File
val appDirs: AppDirs by lazy {
AppDirsFactory.getInstance()
}
val userDataDir: File by lazy {
File(appDirs.getUserDataDir("TachideskJUI", null, null)).also {
if (!it.exists()) it.mkdirs()
}
}