Compare commits
23 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0e0d08ae5a | |||
| 986b4c2c27 | |||
| 0bf9ccfcbd | |||
| 5e8c47928d | |||
| ffae7f911f | |||
| e37fdf6d79 | |||
| b359116745 | |||
| 60073aace3 | |||
| 874b13fa14 | |||
| b146d1024b | |||
| 332e95c021 | |||
| 1f68141df5 | |||
| dd731cd306 | |||
| 38d8d03cae | |||
| ec7d840f37 | |||
| 2813dbb897 | |||
| 77d1402b8a | |||
| 08e8a9d105 | |||
| 71661f70b6 | |||
| ac1e79ba83 | |||
| d082809776 | |||
| a458a696db | |||
| 75786a91b0 |
@@ -1,25 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
rm -rf preview/*.jar preview/*.zip
|
|
||||||
|
|
||||||
cp master/server/build/Tachidesk-*.jar preview
|
|
||||||
cp master/server/build/Tachidesk-*.zip preview
|
|
||||||
|
|
||||||
cd preview
|
|
||||||
|
|
||||||
new_jar_build=$(ls Tachidesk-*.jar)
|
|
||||||
echo "last jar build file name: $new_jar_build"
|
|
||||||
|
|
||||||
latest=$(echo $new_jar_build | sed -e's/Tachidesk-\|.jar//g')
|
|
||||||
echo "{ \"latest\": \"$latest\" }" > index.json
|
|
||||||
|
|
||||||
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
|
||||||
git config --global user.name "github-actions[bot]"
|
|
||||||
git status
|
|
||||||
if [ -n "$(git status --porcelain)" ]; then
|
|
||||||
git add .
|
|
||||||
git commit -m "Updated to $latest"
|
|
||||||
git push
|
|
||||||
else
|
|
||||||
echo "No changes to commit"
|
|
||||||
fi
|
|
||||||
@@ -69,11 +69,30 @@ jobs:
|
|||||||
dependencies-cache-enabled: true
|
dependencies-cache-enabled: true
|
||||||
configuration-cache-enabled: true
|
configuration-cache-enabled: true
|
||||||
|
|
||||||
|
# - name: Mock Build and copy webUI, Build Jar
|
||||||
|
# run: |
|
||||||
|
# mkdir -p master/server/build
|
||||||
|
# cd master/server/build
|
||||||
|
# echo "test" > Tachidesk-v0.3.8-r583.jar
|
||||||
|
|
||||||
|
- name: Generate Tag Name
|
||||||
|
id: GenTagName
|
||||||
|
run: |
|
||||||
|
cd master/server/build
|
||||||
|
genTag=$(ls *.jar | sed -e's/Tachidesk-\|.jar//g')
|
||||||
|
echo "$genTag"
|
||||||
|
echo "::set-output name=value::$genTag"
|
||||||
|
|
||||||
- name: make windows packages
|
- name: make windows packages
|
||||||
run: |
|
run: |
|
||||||
cd master/scripts
|
cd master/scripts
|
||||||
./windows32-bundler.sh
|
./windows-bundler.sh win32
|
||||||
./windows64-bundler.sh
|
./windows-bundler.sh win64
|
||||||
|
|
||||||
|
# - name: Mock make windows packages
|
||||||
|
# run: |
|
||||||
|
# cd master/server/build
|
||||||
|
# echo test > Tachidesk-v0.3.8-r580-win32.zip
|
||||||
|
|
||||||
- name: Checkout preview branch
|
- name: Checkout preview branch
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
@@ -83,6 +102,26 @@ jobs:
|
|||||||
path: preview
|
path: preview
|
||||||
token: ${{ secrets.DEPLOY_PREVIEW_TOKEN }}
|
token: ${{ secrets.DEPLOY_PREVIEW_TOKEN }}
|
||||||
|
|
||||||
- name: Deploy preview
|
- name: Create Tag
|
||||||
run: |
|
run: |
|
||||||
./master/.github/scripts/commit-preview.sh
|
TAG="${{ steps.GenTagName.outputs.value }}"
|
||||||
|
echo "tag: $TAG"
|
||||||
|
cd preview
|
||||||
|
echo "{ \"latest\": \"$TAG\" }" > index.json
|
||||||
|
git add index.json
|
||||||
|
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
||||||
|
git config --global user.name "github-actions[bot]"
|
||||||
|
git commit -m "Updated to $TAG"
|
||||||
|
git push origin main
|
||||||
|
|
||||||
|
git tag $TAG
|
||||||
|
git push origin $TAG
|
||||||
|
|
||||||
|
- name: Upload Preview Release
|
||||||
|
uses: ncipollo/release-action@v1
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.DEPLOY_PREVIEW_TOKEN }}
|
||||||
|
artifacts: "master/server/build/*.jar,master/server/build/*.zip"
|
||||||
|
owner: "Suwayomi"
|
||||||
|
repo: "Tachidesk-preview"
|
||||||
|
tag: ${{ steps.GenTagName.outputs.value }}
|
||||||
|
|||||||
@@ -71,11 +71,11 @@ jobs:
|
|||||||
- name: make windows packages
|
- name: make windows packages
|
||||||
run: |
|
run: |
|
||||||
cd master/scripts
|
cd master/scripts
|
||||||
./windows32-bundler.sh
|
./windows-bundler.sh win32
|
||||||
./windows64-bundler.sh
|
./windows-bundler.sh win64
|
||||||
|
|
||||||
- name: Upload Release
|
- name: Upload Release
|
||||||
uses: xresloader/upload-to-github-release@master
|
uses: xresloader/upload-to-github-release@v1
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
with:
|
with:
|
||||||
|
|||||||
+4
-2
@@ -10,5 +10,7 @@ server/src/main/resources/react
|
|||||||
server/tmp/
|
server/tmp/
|
||||||
server/tachiserver-data/
|
server/tachiserver-data/
|
||||||
|
|
||||||
# OpenJDK downlaods
|
# bundle asset downlaods
|
||||||
OpenJDK*
|
OpenJDK*.zip
|
||||||
|
electron-*.zip
|
||||||
|
rcedit-*
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
| Build | Stable | Preview | Support Server |
|
| Build | Stable | Preview | Support Server |
|
||||||
|-------|----------|---------|---------|
|
|-------|----------|---------|---------|
|
||||||
|  | [](https://github.com/Suwayomi/Tachidesk/releases) | [](https://github.com/Suwayomi/Tachidesk-preview/tree/main/) | [](https://discord.gg/DDZdqZWaHA) |
|
|  | [](https://github.com/Suwayomi/Tachidesk/releases) | [](https://github.com/Suwayomi/Tachidesk-preview/releases/latest) | [](https://discord.gg/DDZdqZWaHA) |
|
||||||
|
|
||||||
# Tachidesk
|
# Tachidesk
|
||||||
<img src="https://github.com/Suwayomi/Tachidesk/raw/master/server/src/main/resources/icon/faviconlogo.png" alt="drawing" width="200"/>
|
<img src="https://github.com/Suwayomi/Tachidesk/raw/master/server/src/main/resources/icon/faviconlogo.png" alt="drawing" width="200"/>
|
||||||
@@ -32,14 +32,18 @@ Here is a list of current features:
|
|||||||
### All Operating Systems
|
### All Operating Systems
|
||||||
You should have The Java Runtime Environment(JRE) 8 or newer and a modern browser installed(Google is your friend for seeking assitance). Also an internet connection is required as almost everything this app does is downloading stuff.
|
You should have The Java Runtime Environment(JRE) 8 or newer and a modern browser installed(Google is your friend for seeking assitance). Also an internet connection is required as almost everything this app does is downloading stuff.
|
||||||
|
|
||||||
Download the latest "Stable" jar release from [the releases section](https://github.com/Suwayomi/Tachidesk/releases) or a preview jar build from [the preview branch](https://github.com/Suwayomi/Tachidesk/tree/preview).
|
Download the latest "Stable" jar release from [the releases section](https://github.com/Suwayomi/Tachidesk/releases) or a preview jar build from [the preview repository](https://github.com/Suwayomi/Tachidesk-preview/releases).
|
||||||
|
|
||||||
Double click on the jar file or run `java -jar Tachidesk-vX.Y.Z-rxxx.jar` (or `java -jar Tachidesk-latest.jar` if you have the latest preview) from a Terminal/Command Prompt window to run the app which will open a new browser window automatically. Also the System Tray Icon is your friend if you need to open the browser window again or close Tachidesk.
|
Double click on the jar file or run `java -jar Tachidesk-vX.Y.Z-rxxx.jar` (or `java -jar Tachidesk-latest.jar` if you have the latest preview) from a Terminal/Command Prompt window to run the app which will open a new browser window automatically. Also the System Tray Icon is your friend if you need to open the browser window again or close Tachidesk.
|
||||||
|
|
||||||
### Windows
|
### Windows
|
||||||
Download the latest win32 or win64 (depending on your system, usually you want win64) release from [the releases section](https://github.com/Suwayomi/Tachidesk/releases).
|
Download the latest "Stable" win32 or win64 (depending on your system, usually you want win64) release from [the releases section](https://github.com/Suwayomi/Tachidesk/releases) or a preview one from [the preview repository](https://github.com/Suwayomi/Tachidesk-preview/releases).
|
||||||
|
|
||||||
The Windows specific build has java bundled inside, so you don't have to install java to use it. Unzip `Tachidesk-vX.Y.Z-rxxx-win64.zip` and run `Tachidesk Launcher.exe` or `Tachidesk Launcher.bat`. The rest works like the previous section.
|
The Windows specific build has java bundled inside, so you don't have to install java to use it. Unzip `Tachidesk-vX.Y.Z-rxxx-win64.zip` and run one of the Launcher files depending on what you want(see bellow). The rest works like the previous section.
|
||||||
|
#### Windows Launchers
|
||||||
|
- `Tachidesk Electron Launcher.bat`: Launches Tachidesk inside Electron as a desktop applicaton
|
||||||
|
- `Tachidesk Browser Launcher.bat`: Launches Tachidesk in a browser window
|
||||||
|
- `Tachidesk Debug Launcher.bat`: Launches Tachidesk with debug logs attached. If Tachidesk doesn't work for you, running this can give you insight into why.
|
||||||
|
|
||||||
### Arch Linux
|
### Arch Linux
|
||||||
You can install Tachidesk from the AUR
|
You can install Tachidesk from the AUR
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
jre\bin\javaw "-Dir.armor.tachidesk.webInterface=electron" "-Dir.armor.tachidesk.electronPath=electron/electron.exe" -jar Tachidesk.jar
|
||||||
Binary file not shown.
Binary file not shown.
Executable
+83
@@ -0,0 +1,83 @@
|
|||||||
|
#!/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/.
|
||||||
|
|
||||||
|
electron_version="v12.0.9"
|
||||||
|
|
||||||
|
if [ $1 = "win32" ]; then
|
||||||
|
jre="OpenJDK8U-jre_x86-32_windows_hotspot_8u292b10.zip"
|
||||||
|
arch="win32"
|
||||||
|
electron="electron-$electron_version-win32-ia32.zip"
|
||||||
|
else
|
||||||
|
jre="OpenJDK8U-jre_x64_windows_hotspot_8u292b10.zip"
|
||||||
|
arch="win64"
|
||||||
|
electron="electron-$electron_version-win32-x64.zip"
|
||||||
|
fi
|
||||||
|
|
||||||
|
jre_dir="jdk8u292-b10-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)-$arch
|
||||||
|
|
||||||
|
|
||||||
|
# make release dir
|
||||||
|
mkdir $release_name
|
||||||
|
|
||||||
|
|
||||||
|
echo "Dealing with jre..."
|
||||||
|
if [ ! -f $jre ]; then
|
||||||
|
curl -L "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u292-b10/$jre" -o $jre
|
||||||
|
fi
|
||||||
|
unzip $jre
|
||||||
|
mv $jre_dir $release_name/jre
|
||||||
|
|
||||||
|
echo "Dealing with electron"
|
||||||
|
if [ ! -f $electron ]; then
|
||||||
|
curl -L "https://github.com/electron/electron/releases/download/$electron_version/$electron" -o $electron
|
||||||
|
fi
|
||||||
|
unzip $electron -d $release_name/electron
|
||||||
|
|
||||||
|
# change electron's icon
|
||||||
|
rcedit="rcedit-x86.exe"
|
||||||
|
if [ ! -f $rcedit ]; then
|
||||||
|
curl -L "https://github.com/electron/rcedit/releases/download/v1.1.1/$rcedit" -o $rcedit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check if running under github actions
|
||||||
|
if [ $CI = true ]; then
|
||||||
|
# change electron executable's icon
|
||||||
|
sudo dpkg --add-architecture i386
|
||||||
|
wget -qO - https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add -
|
||||||
|
sudo add-apt-repository ppa:cybermax-dexter/sdl2-backport
|
||||||
|
sudo apt-add-repository "deb https://dl.winehq.org/wine-builds/ubuntu $(lsb_release -cs) main"
|
||||||
|
sudo apt install --install-recommends winehq-stable
|
||||||
|
fi
|
||||||
|
# this script assumes that wine is installed here on out
|
||||||
|
|
||||||
|
WINEARCH=win32 wine $rcedit $release_name/electron/electron.exe --set-icon ../server/src/main/resources/icon/faviconlogo.ico
|
||||||
|
|
||||||
|
# copy artifacts
|
||||||
|
cp $jar $release_name/Tachidesk.jar
|
||||||
|
#cp "resources/Tachidesk Launcher-$arch.exe" "$release_name/Tachidesk Launcher.exe"
|
||||||
|
cp "resources/Tachidesk Browser Launcher.bat" $release_name
|
||||||
|
cp "resources/Tachidesk Debug Launcher.bat" $release_name
|
||||||
|
cp "resources/Tachidesk Electron Launcher.bat" $release_name
|
||||||
|
|
||||||
|
zip_name=$release_name.zip
|
||||||
|
zip -9 -r $zip_name $release_name
|
||||||
|
|
||||||
|
rm -rf $release_name
|
||||||
|
|
||||||
|
# clean up from possible previous runs
|
||||||
|
if [ -f ../server/build/$zip_name ]; then
|
||||||
|
rm ../server/build/$zip_name
|
||||||
|
fi
|
||||||
|
|
||||||
|
mv $zip_name ../server/build/
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
# 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/.
|
|
||||||
|
|
||||||
Write-Output "Downloading jre..."
|
|
||||||
|
|
||||||
$jre="OpenJDK8U-jre_x86-32_windows_hotspot_8u292b10.zip"
|
|
||||||
if (!(Test-Path $jre)) {
|
|
||||||
Invoke-WebRequest -Uri "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u292-b10/OpenJDK8U-jre_x86-32_windows_hotspot_8u292b10.zip" -OutFile $jre -UseBasicParsing
|
|
||||||
}
|
|
||||||
|
|
||||||
Write-Output "creating windows bundle"
|
|
||||||
|
|
||||||
$jar=$(Get-ChildItem ../server/build/Tachidesk-*.jar)
|
|
||||||
$release_name=$jar.BaseName + "-win32"
|
|
||||||
|
|
||||||
# make release dir
|
|
||||||
New-Item -ItemType Directory $release_name
|
|
||||||
|
|
||||||
Expand-Archive $jre -DestinationPath "./" -ErrorAction SilentlyContinue
|
|
||||||
|
|
||||||
# move jre
|
|
||||||
Move-Item "jdk8u292-b10-jre" "$release_name/jre"
|
|
||||||
|
|
||||||
Copy-Item $jar.FullName "$release_name/Tachidesk.jar"
|
|
||||||
|
|
||||||
Copy-Item "resources/Tachidesk Launcher-win32.exe" $release_name
|
|
||||||
Copy-Item "resources/Tachidesk Launcher.bat" $release_name
|
|
||||||
Copy-Item "resources/Tachidesk Debug Launcher.bat" $release_name
|
|
||||||
|
|
||||||
$zip_name="$release_name.zip"
|
|
||||||
Compress-Archive -CompressionLevel Optimal -DestinationPath $zip_name -Path $release_name -Force -ErrorAction SilentlyContinue
|
|
||||||
|
|
||||||
Remove-Item -Force -Recurse $release_name
|
|
||||||
|
|
||||||
Move-Item $zip_name "../server/build/" -ErrorAction SilentlyContinue
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
#!/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 jre..."
|
|
||||||
|
|
||||||
jre="OpenJDK8U-jre_x86-32_windows_hotspot_8u292b10.zip"
|
|
||||||
if [ ! -f $jre ]; then
|
|
||||||
curl -L "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u292-b10/OpenJDK8U-jre_x86-32_windows_hotspot_8u292b10.zip" -o $jre
|
|
||||||
fi
|
|
||||||
|
|
||||||
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)-win32
|
|
||||||
|
|
||||||
# make release dir
|
|
||||||
mkdir $release_name
|
|
||||||
|
|
||||||
unzip $jre
|
|
||||||
|
|
||||||
# move jre
|
|
||||||
mv jdk8u292-b10-jre $release_name/jre
|
|
||||||
|
|
||||||
cp $jar $release_name/Tachidesk.jar
|
|
||||||
|
|
||||||
cp "resources/Tachidesk Launcher-win32.exe" "$release_name/Tachidesk Launcher.exe"
|
|
||||||
cp "resources/Tachidesk Launcher.bat" $release_name
|
|
||||||
cp "resources/Tachidesk Debug Launcher.bat" $release_name
|
|
||||||
|
|
||||||
zip_name=$release_name.zip
|
|
||||||
zip -9 -r $zip_name $release_name
|
|
||||||
|
|
||||||
rm -rf $release_name
|
|
||||||
|
|
||||||
mv $zip_name ../server/build/
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
# 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/.
|
|
||||||
|
|
||||||
Write-Output "Downloading jre..."
|
|
||||||
|
|
||||||
$jre="OpenJDK8U-jre_x64_windows_hotspot_8u292b10.zip"
|
|
||||||
if (!(Test-Path $jre)) {
|
|
||||||
Invoke-WebRequest -Uri "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u292-b10/OpenJDK8U-jre_x64_windows_hotspot_8u292b10.zip" -OutFile $jre -UseBasicParsing
|
|
||||||
}
|
|
||||||
|
|
||||||
Write-Output "creating windows bundle"
|
|
||||||
|
|
||||||
$jar=$(Get-ChildItem ../server/build/Tachidesk-*.jar)
|
|
||||||
$release_name=$jar.BaseName + "-win64"
|
|
||||||
|
|
||||||
# make release dir
|
|
||||||
New-Item -ItemType Directory $release_name
|
|
||||||
|
|
||||||
Expand-Archive $jre -DestinationPath "./" -ErrorAction SilentlyContinue
|
|
||||||
|
|
||||||
# move jre
|
|
||||||
Move-Item "jdk8u292-b10-jre" "$release_name/jre"
|
|
||||||
|
|
||||||
Copy-Item $jar.FullName "$release_name/Tachidesk.jar"
|
|
||||||
|
|
||||||
Copy-Item "resources/Tachidesk Launcher-win64.exe" $release_name
|
|
||||||
Copy-Item "resources/Tachidesk Launcher.bat" $release_name
|
|
||||||
Copy-Item "resources/Tachidesk Debug Launcher.bat" $release_name
|
|
||||||
|
|
||||||
$zip_name="$release_name.zip"
|
|
||||||
Compress-Archive -CompressionLevel Optimal -DestinationPath $zip_name -Path $release_name -Force -ErrorAction SilentlyContinue
|
|
||||||
|
|
||||||
Remove-Item -Force -Recurse $release_name
|
|
||||||
|
|
||||||
Move-Item $zip_name "../server/build/" -ErrorAction SilentlyContinue
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
#!/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 jre..."
|
|
||||||
|
|
||||||
jre="OpenJDK8U-jre_x64_windows_hotspot_8u292b10.zip"
|
|
||||||
if [ ! -f $jre ]; then
|
|
||||||
curl -L "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u292-b10/OpenJDK8U-jre_x64_windows_hotspot_8u292b10.zip" -o $jre
|
|
||||||
fi
|
|
||||||
|
|
||||||
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)-win64
|
|
||||||
|
|
||||||
# make release dir
|
|
||||||
mkdir $release_name
|
|
||||||
|
|
||||||
unzip $jre
|
|
||||||
|
|
||||||
# move jre
|
|
||||||
mv jdk8u292-b10-jre $release_name/jre
|
|
||||||
|
|
||||||
cp $jar $release_name/Tachidesk.jar
|
|
||||||
|
|
||||||
cp "resources/Tachidesk Launcher-win64.exe" "$release_name/Tachidesk Launcher.exe"
|
|
||||||
cp "resources/Tachidesk Launcher.bat" $release_name
|
|
||||||
cp "resources/Tachidesk Debug Launcher.bat" $release_name
|
|
||||||
|
|
||||||
zip_name=$release_name.zip
|
|
||||||
zip -9 -r $zip_name $release_name
|
|
||||||
|
|
||||||
rm -rf $release_name
|
|
||||||
|
|
||||||
mv $zip_name ../server/build/
|
|
||||||
@@ -75,6 +75,12 @@ dependencies {
|
|||||||
val MainClass = "ir.armor.tachidesk.MainKt"
|
val MainClass = "ir.armor.tachidesk.MainKt"
|
||||||
application {
|
application {
|
||||||
mainClass.set(MainClass)
|
mainClass.set(MainClass)
|
||||||
|
|
||||||
|
// for testing electron
|
||||||
|
// applicationDefaultJvmArgs = listOf(
|
||||||
|
// "-Dir.armor.tachidesk.webInterface=electron",
|
||||||
|
// "-Dir.armor.tachidesk.electronPath=/home/armor/programming/Suwayomi/Tachidesk/scripts/electron-v12.0.9-linux-x64/electron"
|
||||||
|
// )
|
||||||
}
|
}
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
@@ -86,7 +92,7 @@ sourceSets {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// should be bumped with each stable release
|
// should be bumped with each stable release
|
||||||
val tachideskVersion = "v0.3.8"
|
val tachideskVersion = "v0.3.9"
|
||||||
|
|
||||||
// counts commit count on master
|
// counts commit count on master
|
||||||
val tachideskRevision = Runtime
|
val tachideskRevision = Runtime
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ import ir.armor.tachidesk.impl.extension.Extension.uninstallExtension
|
|||||||
import ir.armor.tachidesk.impl.extension.Extension.updateExtension
|
import ir.armor.tachidesk.impl.extension.Extension.updateExtension
|
||||||
import ir.armor.tachidesk.impl.extension.ExtensionsList.getExtensionList
|
import ir.armor.tachidesk.impl.extension.ExtensionsList.getExtensionList
|
||||||
import ir.armor.tachidesk.server.impl_internal.About.getAbout
|
import ir.armor.tachidesk.server.impl_internal.About.getAbout
|
||||||
import ir.armor.tachidesk.server.util.openInBrowser
|
import ir.armor.tachidesk.server.util.Browser
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.SupervisorJob
|
import kotlinx.coroutines.SupervisorJob
|
||||||
@@ -78,6 +78,12 @@ object JavalinSetup {
|
|||||||
hasWebUiBundled = false
|
hasWebUiBundled = false
|
||||||
}
|
}
|
||||||
config.enableCorsForAllOrigins()
|
config.enableCorsForAllOrigins()
|
||||||
|
}.events { event ->
|
||||||
|
event.serverStarted {
|
||||||
|
if (hasWebUiBundled && serverConfig.initialOpenInBrowserEnabled) {
|
||||||
|
Browser.openInBrowser()
|
||||||
|
}
|
||||||
|
}
|
||||||
}.start(serverConfig.ip, serverConfig.port)
|
}.start(serverConfig.ip, serverConfig.port)
|
||||||
|
|
||||||
// when JVM is prompted to shutdown, stop javalin gracefully
|
// when JVM is prompted to shutdown, stop javalin gracefully
|
||||||
@@ -87,10 +93,6 @@ object JavalinSetup {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
if (hasWebUiBundled && serverConfig.initialOpenInBrowserEnabled) {
|
|
||||||
openInBrowser()
|
|
||||||
}
|
|
||||||
|
|
||||||
app.exception(NullPointerException::class.java) { e, ctx ->
|
app.exception(NullPointerException::class.java) { e, ctx ->
|
||||||
logger.error("NullPointerException while handling the request", e)
|
logger.error("NullPointerException while handling the request", e)
|
||||||
ctx.status(404)
|
ctx.status(404)
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ package ir.armor.tachidesk.server
|
|||||||
import eu.kanade.tachiyomi.App
|
import eu.kanade.tachiyomi.App
|
||||||
import ir.armor.tachidesk.model.database.databaseUp
|
import ir.armor.tachidesk.model.database.databaseUp
|
||||||
import ir.armor.tachidesk.server.util.AppMutex.handleAppMutex
|
import ir.armor.tachidesk.server.util.AppMutex.handleAppMutex
|
||||||
import ir.armor.tachidesk.server.util.systemTray
|
import ir.armor.tachidesk.server.util.SystemTray.systemTray
|
||||||
import mu.KotlinLogging
|
import mu.KotlinLogging
|
||||||
import org.kodein.di.DI
|
import org.kodein.di.DI
|
||||||
import org.kodein.di.bind
|
import org.kodein.di.bind
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import ir.armor.tachidesk.server.serverConfig
|
|||||||
import ir.armor.tachidesk.server.util.AppMutex.AppMutexStat.Clear
|
import ir.armor.tachidesk.server.util.AppMutex.AppMutexStat.Clear
|
||||||
import ir.armor.tachidesk.server.util.AppMutex.AppMutexStat.OtherApplicationRunning
|
import ir.armor.tachidesk.server.util.AppMutex.AppMutexStat.OtherApplicationRunning
|
||||||
import ir.armor.tachidesk.server.util.AppMutex.AppMutexStat.TachideskInstanceRunning
|
import ir.armor.tachidesk.server.util.AppMutex.AppMutexStat.TachideskInstanceRunning
|
||||||
|
import ir.armor.tachidesk.server.util.Browser.openInBrowser
|
||||||
import mu.KotlinLogging
|
import mu.KotlinLogging
|
||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
import okhttp3.Request.Builder
|
import okhttp3.Request.Builder
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
package ir.armor.tachidesk.server.util
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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/. */
|
||||||
|
|
||||||
|
import dorkbox.util.Desktop
|
||||||
|
import ir.armor.tachidesk.server.serverConfig
|
||||||
|
|
||||||
|
object Browser {
|
||||||
|
private val appIP = if (serverConfig.ip == "0.0.0.0") "127.0.0.1" else serverConfig.ip
|
||||||
|
private val appBaseUrl = "http://$appIP:${serverConfig.port}"
|
||||||
|
|
||||||
|
private val electronInstances = mutableListOf<Any>()
|
||||||
|
|
||||||
|
fun openInBrowser() {
|
||||||
|
|
||||||
|
val openInElectron = System.getProperty("ir.armor.tachidesk.webInterface")?.equals("electron")
|
||||||
|
|
||||||
|
if (openInElectron == true) {
|
||||||
|
try {
|
||||||
|
val electronPath = System.getProperty("ir.armor.tachidesk.electronPath")!!
|
||||||
|
electronInstances.add(ProcessBuilder(electronPath, appBaseUrl).start())
|
||||||
|
} catch (e: Throwable) { // cover both java.lang.Exception and java.lang.Error
|
||||||
|
e.printStackTrace()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
Desktop.browseURL(appBaseUrl)
|
||||||
|
} catch (e: Throwable) { // cover both java.lang.Exception and java.lang.Error
|
||||||
|
e.printStackTrace()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -10,56 +10,49 @@ package ir.armor.tachidesk.server.util
|
|||||||
import dorkbox.systemTray.MenuItem
|
import dorkbox.systemTray.MenuItem
|
||||||
import dorkbox.systemTray.SystemTray
|
import dorkbox.systemTray.SystemTray
|
||||||
import dorkbox.util.CacheUtil
|
import dorkbox.util.CacheUtil
|
||||||
import dorkbox.util.Desktop
|
|
||||||
import ir.armor.tachidesk.server.BuildConfig
|
import ir.armor.tachidesk.server.BuildConfig
|
||||||
import ir.armor.tachidesk.server.ServerConfig
|
import ir.armor.tachidesk.server.ServerConfig
|
||||||
import ir.armor.tachidesk.server.serverConfig
|
import ir.armor.tachidesk.server.serverConfig
|
||||||
|
import ir.armor.tachidesk.server.util.Browser.openInBrowser
|
||||||
import ir.armor.tachidesk.server.util.ExitCode.Success
|
import ir.armor.tachidesk.server.util.ExitCode.Success
|
||||||
|
|
||||||
fun openInBrowser() {
|
object SystemTray {
|
||||||
val appIP = if (serverConfig.ip == "0.0.0.0") "127.0.0.1" else serverConfig.ip
|
fun systemTray(): SystemTray? {
|
||||||
try {
|
try {
|
||||||
Desktop.browseURL("http://$appIP:${serverConfig.port}")
|
// ref: https://github.com/dorkbox/SystemTray/blob/master/test/dorkbox/TestTray.java
|
||||||
} catch (e: Throwable) { // cover both java.lang.Exception and java.lang.Error
|
SystemTray.DEBUG = serverConfig.debugLogsEnabled
|
||||||
e.printStackTrace()
|
|
||||||
}
|
CacheUtil.clear(BuildConfig.name)
|
||||||
}
|
|
||||||
|
val systemTray = SystemTray.get(BuildConfig.name) ?: return null
|
||||||
fun systemTray(): SystemTray? {
|
val mainMenu = systemTray.menu
|
||||||
try {
|
|
||||||
// ref: https://github.com/dorkbox/SystemTray/blob/master/test/dorkbox/TestTray.java
|
mainMenu.add(
|
||||||
SystemTray.DEBUG = serverConfig.debugLogsEnabled
|
MenuItem(
|
||||||
|
"Open Tachidesk"
|
||||||
CacheUtil.clear(BuildConfig.name)
|
) {
|
||||||
|
openInBrowser()
|
||||||
val systemTray = SystemTray.get(BuildConfig.name) ?: return null
|
}
|
||||||
val mainMenu = systemTray.menu
|
)
|
||||||
|
|
||||||
mainMenu.add(
|
val icon = ServerConfig::class.java.getResource("/icon/faviconlogo.png")
|
||||||
MenuItem(
|
|
||||||
"Open Tachidesk"
|
// systemTray.setTooltip("Tachidesk")
|
||||||
) {
|
systemTray.setImage(icon)
|
||||||
openInBrowser()
|
// systemTray.status = "No Mail"
|
||||||
}
|
|
||||||
)
|
mainMenu.add(
|
||||||
|
MenuItem("Quit") {
|
||||||
val icon = ServerConfig::class.java.getResource("/icon/faviconlogo.png")
|
shutdownApp(Success)
|
||||||
|
}
|
||||||
// systemTray.setTooltip("Tachidesk")
|
)
|
||||||
systemTray.setImage(icon)
|
|
||||||
// systemTray.status = "No Mail"
|
systemTray.installShutdownHook()
|
||||||
|
|
||||||
mainMenu.add(
|
return systemTray
|
||||||
MenuItem("Quit") {
|
} catch (e: Exception) {
|
||||||
shutdownApp(Success)
|
e.printStackTrace()
|
||||||
}
|
return null
|
||||||
)
|
}
|
||||||
|
|
||||||
systemTray.installShutdownHook()
|
|
||||||
|
|
||||||
return systemTray
|
|
||||||
} catch (e: Exception) {
|
|
||||||
e.printStackTrace()
|
|
||||||
return null
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user