mirror of
https://github.com/SlimeVR/SlimeVR-Server.git
synced 2026-04-06 02:01:58 +02:00
Update unzip to support progress display
This commit is contained in:
@@ -31,7 +31,7 @@ class Linux {
|
||||
subProgressBar.string = "Downloading SteamVR Driver"
|
||||
downloadFile(LINUXSTEAMVRDRIVERURL, LINUXSTEAMVRDRIVERNAME)
|
||||
subProgressBar.string = "Unzipping SteamVR Driver"
|
||||
newAndCoolUnzip(LINUXSTEAMVRDRIVERNAME, LINUXSTEAMVRDRIVERDIRECTORY)
|
||||
unzip(LINUXSTEAMVRDRIVERNAME, LINUXSTEAMVRDRIVERDIRECTORY)
|
||||
println("Driver downloaded")
|
||||
println("Registering driver with steamvr")
|
||||
println("${Paths.get("").toAbsolutePath()}/$LINUXSTEAMVRDRIVERDIRECTORY/slimevr")
|
||||
@@ -63,19 +63,15 @@ class Linux {
|
||||
|
||||
fun feeder() {
|
||||
mainProgressBar.string = "Updating Feeder app"
|
||||
subProgressBar.value = 25
|
||||
subProgressBar.string = "Downloading Feeder App"
|
||||
println("Downloading feeder")
|
||||
downloadFile(LINUXFEEDERURL, LINUXFEEDERNAME)
|
||||
subProgressBar.value = 50
|
||||
subProgressBar.string = "Unzipping Feeder App"
|
||||
newAndCoolUnzip(LINUXFEEDERNAME, LINUXFEEDERDIRECTORY)
|
||||
subProgressBar.value = 75
|
||||
unzip(LINUXFEEDERNAME, LINUXFEEDERDIRECTORY)
|
||||
subProgressBar.string = "Registering Feeder App"
|
||||
executeShellCommand("${path}/${LINUXFEEDERDIRECTORY}/SlimeVR-Feeder-App", "--install")
|
||||
mainProgressBar.value = (100 / 3 * 3)
|
||||
subProgressBar.string = "Feeder app done"
|
||||
subProgressBar.value = 100
|
||||
}
|
||||
|
||||
fun updateServer() {
|
||||
@@ -86,15 +82,12 @@ class Linux {
|
||||
//TODO: Find a way to do version checking on udev rules
|
||||
fun updateUdev() {
|
||||
mainProgressBar.string = "Setting udev"
|
||||
subProgressBar.value = 25
|
||||
subProgressBar.string = "Setting udev"
|
||||
val file = Path("/etc/udev/rules.d/69-slimevr-devices.rules")
|
||||
if (file.exists()) {
|
||||
subProgressBar.value = 100
|
||||
subProgressBar.string = "Udev rules already installed"
|
||||
return
|
||||
}
|
||||
subProgressBar.value = 75
|
||||
subProgressBar.string = "Asking for privileges"
|
||||
val res = executeShellCommand("pkexec", "cp", "${path}/69-slimevr-devices.rules", "/etc/udev/rules.d/69-slimevr-devices.rules")
|
||||
if (res.contains("Error")) {
|
||||
|
||||
@@ -14,13 +14,11 @@ import io.ktor.utils.io.jvm.javaio.copyTo
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import kotlinx.serialization.json.Json
|
||||
import java.io.File
|
||||
import java.io.FileInputStream
|
||||
import java.io.FileOutputStream
|
||||
import java.io.IOException
|
||||
import java.lang.Exception
|
||||
import java.util.zip.ZipEntry
|
||||
import java.util.zip.ZipFile
|
||||
import java.util.zip.ZipInputStream
|
||||
import kotlin.time.Duration.Companion.minutes
|
||||
|
||||
fun executeShellCommand(vararg command: String): String = try {
|
||||
@@ -34,28 +32,6 @@ fun executeShellCommand(vararg command: String): String = try {
|
||||
"Error executing shell command: ${e.message}"
|
||||
}
|
||||
|
||||
/*
|
||||
// TODO: This function is really really slow, make it faster, also give feedback
|
||||
fun downloadFile(fileUrl: String, filename: String) {
|
||||
println("Downloading $filename from $fileUrl")
|
||||
val url = URL(fileUrl)
|
||||
try {
|
||||
val bufferedInputStream = BufferedInputStream(url.openStream())
|
||||
val fileOutputStream = FileOutputStream(filename)
|
||||
val dataBuffer = ByteArray(1024)
|
||||
var bytesRead = bufferedInputStream.read(dataBuffer, 0, 1024)
|
||||
while (bytesRead != -1) {
|
||||
fileOutputStream.write(dataBuffer, 0, bytesRead)
|
||||
bytesRead = bufferedInputStream.read(dataBuffer, 0, 1024)
|
||||
}
|
||||
val inputStream = url.openStream()
|
||||
Files.copy(inputStream, Paths.get(filename), StandardCopyOption.REPLACE_EXISTING)
|
||||
} catch (e: IOException) {
|
||||
println("Error downloading file, ${e.message}")
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
val sendProgress: (Float) -> Unit = { progress -> subProgressBar.value = progress.toInt() }
|
||||
|
||||
fun downloadFile(
|
||||
@@ -153,22 +129,21 @@ fun unzip(
|
||||
|
||||
*/
|
||||
|
||||
fun newAndCoolUnzip(
|
||||
fun unzip(
|
||||
file: String,
|
||||
destDir: String,
|
||||
onProgress: (Float) -> Unit = sendProgress) {
|
||||
try {
|
||||
val file = File(file)
|
||||
val destFile = File(destDir)
|
||||
val zipFile = ZipFile(file)
|
||||
val dataBuffer = ByteArray(1024)
|
||||
val zipEntries = zipFile.entries()
|
||||
val zipSize = zipFile.size()
|
||||
var currentEntryCount = 0
|
||||
while (zipEntries.hasMoreElements()) {
|
||||
println(currentEntryCount.toFloat() / zipSize.toFloat() * 100)
|
||||
val currentEntry = zipEntries.nextElement()
|
||||
val inputStream = zipFile.getInputStream(currentEntry)
|
||||
val file = newFile(file, currentEntry)
|
||||
val file = newFile(destFile, currentEntry)
|
||||
if (currentEntry.isDirectory) {
|
||||
if (!file.isDirectory && !file.mkdirs()) {
|
||||
throw IOException("Failed to create directory: $file")
|
||||
@@ -189,7 +164,6 @@ fun newAndCoolUnzip(
|
||||
}
|
||||
onProgress(currentEntryCount.toFloat() / zipSize.toFloat() * 100)
|
||||
currentEntryCount++
|
||||
println(currentEntryCount.toFloat() / zipSize.toFloat() * 100)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
println("Error during unzip: ${e.message}")
|
||||
|
||||
@@ -38,7 +38,7 @@ class Windows {
|
||||
// downloading slime server
|
||||
downloadFile(WINDOWSSERVERURL, WINDOWSSERVERNAME)
|
||||
println("extracting")
|
||||
newAndCoolUnzip(WINDOWSSERVERNAME, WINDOWSSERVERDIRECTORY)
|
||||
unzip(WINDOWSSERVERNAME, WINDOWSSERVERDIRECTORY)
|
||||
}
|
||||
|
||||
fun feeder() {
|
||||
@@ -46,7 +46,7 @@ class Windows {
|
||||
println("Downloading feeder")
|
||||
downloadFile(WINDOWSFEEDERURL, WINDOWSFEEDERNAME)
|
||||
println("Unzipping feeder")
|
||||
newAndCoolUnzip(WINDOWSFEEDERNAME, WINDOWSFEEDERDIRECTORY)
|
||||
unzip(WINDOWSFEEDERNAME, WINDOWSFEEDERDIRECTORY)
|
||||
executeShellCommand("${path}\\${WINDOWSFEEDERDIRECTORY}\\SlimeVR-Feeder-App.exe", "--install")
|
||||
mainProgressBar.value = (100 / 3 * 3)
|
||||
}
|
||||
@@ -69,7 +69,7 @@ class Windows {
|
||||
println("Installing SteamVR Driver")
|
||||
println("Downloading SteamVR driver")
|
||||
downloadFile(WINDOWSSTEAMVRDRIVERURL, WINDOWSSTEAMVRDRIVERNAME)
|
||||
newAndCoolUnzip(WINDOWSSTEAMVRDRIVERNAME, WINDOWSSTEAMVRDRIVERDIRECTORY)
|
||||
unzip(WINDOWSSTEAMVRDRIVERNAME, WINDOWSSTEAMVRDRIVERDIRECTORY)
|
||||
println("Driver downloaded")
|
||||
println("Registering driver with steamvr")
|
||||
executeShellCommand(
|
||||
|
||||
Reference in New Issue
Block a user