From 7d2f542f8ac888d5e3b877f94f9b24c7d2f3a953 Mon Sep 17 00:00:00 2001 From: Aria Moradi Date: Sun, 8 Aug 2021 06:18:00 +0430 Subject: [PATCH] bundle WebUI for stable builds --- .github/workflows/publish.yml | 2 +- .gitignore | 2 +- server/build.gradle.kts | 6 ++ .../tachidesk/server/util/WebUIManager.kt | 60 ++++++++++++------- 4 files changed, 46 insertions(+), 24 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 17de18e9..81ab7f36 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -65,7 +65,7 @@ jobs: with: build-root-directory: master wrapper-directory: master - arguments: :webUI:copyBuild :server:shadowJar --stacktrace + arguments: :server:downloadWebUI :server:shadowJar --stacktrace wrapper-cache-enabled: true dependencies-cache-enabled: true configuration-cache-enabled: true diff --git a/.gitignore b/.gitignore index 8d85ed7c..617660ff 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,7 @@ gradle.properties # Ignore Gradle build output directory build -server/src/main/resources/webUI +server/src/main/resources/WebUI.zip server/tmp/ server/tachiserver-data/ diff --git a/server/build.gradle.kts b/server/build.gradle.kts index 25c53c23..60f1af37 100644 --- a/server/build.gradle.kts +++ b/server/build.gradle.kts @@ -181,6 +181,12 @@ tasks { named("processResources") { duplicatesStrategy = DuplicatesStrategy.INCLUDE + mustRunAfter("downloadWebUI") + } + + register("downloadWebUI") { + src("https://github.com/Suwayomi/Tachidesk-WebUI-preview/releases/download/$webUIRevisionTag/Tachidesk-WebUI-$webUIRevisionTag.zip") + dest("src/main/resources/WebUI.zip") } withType { diff --git a/server/src/main/kotlin/suwayomi/tachidesk/server/util/WebUIManager.kt b/server/src/main/kotlin/suwayomi/tachidesk/server/util/WebUIManager.kt index 4a4b7c74..c9ad1821 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/server/util/WebUIManager.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/server/util/WebUIManager.kt @@ -53,40 +53,56 @@ fun setupWebUI() { } else { File(applicationDirs.webUIRoot).deleteRecursively() - // download webUI zip val webUIZip = "Tachidesk-WebUI-${BuildConfig.WEBUI_TAG}.zip" val webUIZipPath = "$tmpDir/$webUIZip" - val webUIZipURL = "${BuildConfig.WEBUI_REPO}/releases/download/${BuildConfig.WEBUI_TAG}/$webUIZip" val webUIZipFile = File(webUIZipPath) - webUIZipFile.delete() - logger.info { "Downloading WebUI zip from the Internet..." } - val data = ByteArray(1024) + // try with resources first + val resourceWebUI = try { + BuildConfig::class.java.getResourceAsStream("/WebUI.zip") + } catch (e: NullPointerException) { null } - webUIZipFile.outputStream().use { webUIZipFileOut -> - BufferedInputStream(URL(webUIZipURL).openStream()).use { inp -> - var totalCount = 0 - var tresh = 0 - while (true) { - val count = inp.read(data, 0, 1024) - totalCount += count - if (totalCount > tresh + 10 * 1024) { - tresh = totalCount - print(" *") + if (resourceWebUI == null) { // is not bundled + // download webUI zip + val webUIZipURL = "${BuildConfig.WEBUI_REPO}/releases/download/${BuildConfig.WEBUI_TAG}/$webUIZip" + webUIZipFile.delete() + + logger.info { "Downloading WebUI zip from the Internet..." } + val data = ByteArray(1024) + + webUIZipFile.outputStream().use { webUIZipFileOut -> + BufferedInputStream(URL(webUIZipURL).openStream()).use { inp -> + var totalCount = 0 + var tresh = 0 + while (true) { + val count = inp.read(data, 0, 1024) + totalCount += count + if (totalCount > tresh + 10 * 1024) { + tresh = totalCount + print(" *") + } + if (count == -1) + break + webUIZipFileOut.write(data, 0, count) } - if (count == -1) - break - webUIZipFileOut.write(data, 0, count) + println() + logger.info { "Downloading WebUI Done." } + } + } + } else { + logger.info { "Using the bundled WebUI zip..." } + + resourceWebUI.use { input -> + webUIZipFile.outputStream().use { output -> + input.copyTo(output) } - println() - logger.info { "Downloading WebUI Done." } } } // extract webUI zip - logger.info { "Extracting downloaded WebUI zip..." } + logger.info { "Extracting WebUI zip..." } File(applicationDirs.webUIRoot).mkdirs() ZipFile(webUIZipPath).extractAll(applicationDirs.webUIRoot) - logger.info { "Extracting downloaded WebUI zip Done." } + logger.info { "Extracting WebUI zip Done." } } }