From 9c55fc3868052231d0646dad94e55f12e87ab7a1 Mon Sep 17 00:00:00 2001 From: Aria Moradi Date: Mon, 17 May 2021 11:20:24 +0430 Subject: [PATCH] make windows package with packr --- .github/scripts/commit-preview.sh | 1 + .github/workflows/build_push.yml | 12 +++-- .github/workflows/publish.yml | 38 ++----------- scripts/resources/Tachidesk-debug.bat | 1 + scripts/windows-bundler.sh | 43 +++++++++++++++ server/build.gradle.kts | 54 +------------------ .../ir/armor/tachidesk/server/ServerConfig.kt | 2 +- webUI/react/src/electron.js | 37 +++++++++++++ 8 files changed, 98 insertions(+), 90 deletions(-) create mode 100644 scripts/resources/Tachidesk-debug.bat create mode 100644 scripts/windows-bundler.sh create mode 100644 webUI/react/src/electron.js diff --git a/.github/scripts/commit-preview.sh b/.github/scripts/commit-preview.sh index f6163c9..41c46e2 100755 --- a/.github/scripts/commit-preview.sh +++ b/.github/scripts/commit-preview.sh @@ -10,6 +10,7 @@ cp -f $new_jar_build Tachidesk-latest.jar rm -rf latest_pointer/* cp $new_jar_build latest_pointer +cp master/server/build/Tachidesk-*.zip latest_pointer latest=$(ls *.jar | tail -n1 | sed -e's/Tachidesk-\|.jar//g') echo "{ \"latest\": \"$latest\" }" > index.json diff --git a/.github/workflows/build_push.yml b/.github/workflows/build_push.yml index aa8d6e9..df34834 100644 --- a/.github/workflows/build_push.yml +++ b/.github/workflows/build_push.yml @@ -59,12 +59,13 @@ jobs: **/react/node_modules key: ${{ runner.os }}-${{ hashFiles('**/react/yarn.lock') }} - - name: Build and copy webUI, Build Jar and launch4j + - name: Build and copy webUI, Build Jar uses: eskatos/gradle-command-action@v1 with: build-root-directory: master wrapper-directory: master - arguments: :webUI:copyBuild :server:windowsPackage --stacktrace +# arguments: :webUI:copyBuild :server:shadowJar --stacktrace + arguments: :server:shadowJar --stacktrace wrapper-cache-enabled: true dependencies-cache-enabled: true configuration-cache-enabled: true @@ -75,6 +76,11 @@ jobs: ref: preview path: preview + - name: make windows package + run: | + cd master/scripts + ./windows-bundler.sh + - name: Deploy preview run: | - ./master/.github/scripts/commit-preview.sh + ./master/.github/scripts/commit-preview.sh \ No newline at end of file diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index bffc869..bfa49a1 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -56,14 +56,14 @@ jobs: with: path: | **/react/node_modules - key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} + key: ${{ runner.os }}-${{ hashFiles('**/react/yarn.lock') }} - - name: Build and copy webUI, Build Jar and launch4j + - name: Build and copy webUI, Build Jar uses: eskatos/gradle-command-action@v1 with: build-root-directory: master wrapper-directory: master - arguments: :webUI:copyBuild :server:windowsPackage --stacktrace + arguments: :webUI:copyBuild :server:shadowJar --stacktrace wrapper-cache-enabled: true dependencies-cache-enabled: true configuration-cache-enabled: true @@ -73,37 +73,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - file: "master/server/build/*.jar;master/server/build/*-win32.zip" + file: "master/server/build/*.jar" tags: true draft: true verbose: true - -# - name: Create Release -# id: create_release -# uses: actions/create-release@v1 -# env: -# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -# with: -# tag_name: ${{ github.ref }} -# release_name: Release ${{ github.ref }} -# body: | -# Release body -# draft: false -# prerelease: true -# -# - name: Get the Ref -# id: get-ref -# uses: ankitvgupta/ref-to-tag-action@master -# with: -# ref: ${{ github.ref }} -# head_ref: ${{ github.head_ref }} -# -# - name: Get the tag -# run: echo "The tag was ${{ steps.get-ref.outputs.tag }}" -# -# - name: Upload Release -# uses: AButler/upload-release-assets@v2.0 -# with: -# files: 'master/repo/*' -# repo-token: ${{ secrets.GITHUB_TOKEN }} -# release-tag: ${{ steps.get-ref.outputs.tag }} diff --git a/scripts/resources/Tachidesk-debug.bat b/scripts/resources/Tachidesk-debug.bat new file mode 100644 index 0000000..d185009 --- /dev/null +++ b/scripts/resources/Tachidesk-debug.bat @@ -0,0 +1 @@ +jre\bin\java -Dir.armor.tachidesk.debugLogsEnabled=true -jar Tachidesk.jar diff --git a/scripts/windows-bundler.sh b/scripts/windows-bundler.sh new file mode 100644 index 0000000..65ed7d3 --- /dev/null +++ b/scripts/windows-bundler.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +# 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/. + +echo "Downloading packr jar..." + +packr="packr-all-4.0.0.jar" +curl -L "https://github.com/libgdx/packr/releases/download/4.0.0/packr-all-4.0.0.jar" -o $packr + +echo "Downloading jre..." + +jre="OpenJDK8U-jre_x64_windows_hotspot_8u292b10.zip" +curl -L "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u292-b10/OpenJDK8U-jre_x64_windows_hotspot_8u292b10.zip" -o $jre + +echo "creating windows bundle" + +jar=$(ls ../server/build/Tachidesk-*.jar) +jar_name=$(echo $jar | cut -d'/' -f4) +release_name=$(echo $jar_name | cut -d'.' -f4 --complement) + +cp $jar "Tachidesk.jar" + +java -jar $packr \ + --platform windows64 \ + --jdk $jre \ + --executable Tachidesk \ + --classpath Tachidesk.jar \ + --mainclass ir.armor.tachidesk.Main \ + --vmargs Xmx4G \ + --output $release_name + +cp resources/Tachidesk-debug.bat $release_name + +zip_name="$release_name-win64.zip" +zip -9 -r $zip_name $release_name + +cp $zip_name ../server/build/ + + diff --git a/server/build.gradle.kts b/server/build.gradle.kts index b42122e..6c114a1 100644 --- a/server/build.gradle.kts +++ b/server/build.gradle.kts @@ -168,58 +168,8 @@ tasks { test { useJUnit() } - - register("windowsPackage") { - from(fileTree("$buildDir/${rootProject.name}-$tachideskVersion-$tachideskRevision-win64")) - destinationDirectory.set(File("$buildDir")) - archiveFileName.set("${rootProject.name}-$tachideskVersion-$tachideskRevision-win64.zip") - dependsOn("windowsPackageWorkaround2") - } - - register("windowsPackageWorkaround2") { - delete( - "$buildDir/${rootProject.name}-$tachideskVersion-$tachideskRevision-win64/jre", - "$buildDir/${rootProject.name}-$tachideskVersion-$tachideskRevision-win64/lib", - "$buildDir/${rootProject.name}-$tachideskVersion-$tachideskRevision-win64/server.exe", - "$buildDir/${rootProject.name}-$tachideskVersion-$tachideskRevision-win64/Tachidesk-$tachideskVersion-$tachideskRevision-win64/Tachidesk-$tachideskVersion-$tachideskRevision-win64" - ) - dependsOn("windowsPackageWorkaround") - } - - register("windowsPackageWorkaround") { - from("$buildDir/${rootProject.name}-$tachideskVersion-$tachideskRevision-win64") - into("$buildDir/${rootProject.name}-$tachideskVersion-$tachideskRevision-win64/${rootProject.name}-$tachideskVersion-$tachideskRevision-win64") - dependsOn("deleteUnwantedJreDir") - } - - register("deleteUnwantedJreDir") { - delete( - "$buildDir/${rootProject.name}-$tachideskVersion-$tachideskRevision-win64/jdk8u292-b10-jre" - ) - dependsOn("addJreToDistributable") - } - - register("addJreToDistributable") { - from(zipTree("$buildDir/OpenJDK8U-jre_x64_windows_hotspot_8u292b10.zip")) - into("$buildDir/${rootProject.name}-$tachideskVersion-$tachideskRevision-win64") - eachFile { - path = path.replace(".*-jre".toRegex(), "jre") - } - dependsOn("downloadJre") - dependsOn("createExe") - } - - named("createExe") { - dependsOn("shadowJar") - } - - register("downloadJre") { - src("https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u292-b10/OpenJDK8U-jre_x64_windows_hotspot_8u292b10.zip") - dest("$buildDir/OpenJDK8U-jre_x64_windows_hotspot_8u292b10.zip") - overwrite(false) - onlyIfModified(true) - } - + + withType { destinationDirectory.set(File("$rootDir/server/build")) dependsOn("formatKotlin", "lintKotlin") diff --git a/server/src/main/kotlin/ir/armor/tachidesk/server/ServerConfig.kt b/server/src/main/kotlin/ir/armor/tachidesk/server/ServerConfig.kt index cd65d6b..9750f64 100644 --- a/server/src/main/kotlin/ir/armor/tachidesk/server/ServerConfig.kt +++ b/server/src/main/kotlin/ir/armor/tachidesk/server/ServerConfig.kt @@ -21,7 +21,7 @@ class ServerConfig(config: Config) : ConfigModule(config) { val socksProxyPort: String by config // misc - val debugLogsEnabled: Boolean by config + val debugLogsEnabled: Boolean = System.getProperty("ir.armor.tachidesk.debugLogsEnabled", config.getString("debugLogsEnabled")).toBoolean() val systemTrayEnabled: Boolean by config val initialOpenInBrowserEnabled: Boolean by config diff --git a/webUI/react/src/electron.js b/webUI/react/src/electron.js new file mode 100644 index 0000000..22cc1bc --- /dev/null +++ b/webUI/react/src/electron.js @@ -0,0 +1,37 @@ +const { app, BrowserWindow } = require('electron'); +const path = require('path'); +const isDev = require('electron-is-dev'); + +function createWindow() { + const win = new BrowserWindow({ + width: 800, + height: 600, + webPreferences: { + preload: path.join(__dirname, 'preload.js'), + }, + }); + + // and load the index.html of the app. + // win.loadFile("index.html"); + win.loadURL( + isDev + ? 'http://localhost:3000' + : `file://${path.join(__dirname, '../build/index.html')}`, + ); +} + +app.whenReady().then(() => { + createWindow(); + + app.on('activate', () => { + if (BrowserWindow.getAllWindows().length === 0) { + createWindow(); + } + }); +}); + +app.on('window-all-closed', () => { + if (process.platform !== 'darwin') { + app.quit(); + } +});