client
Clone or download
Modified Files
name: Build
name: Build
on:
on:
workflow_run:
workflow_run:
workflows: ["Init"]
workflows: ["Init"]
types:
types:
- completed
- completed
jobs:
jobs:
build-linux-and-android:
build-linux-and-android:
runs-on: ubuntu-20.04
runs-on: ubuntu-20.04
steps:
steps:
- name: Install packages
- name: Install packages
run: sudo apt install axel libasound2-dev libavcodec-dev libavformat-dev libavutil-dev libgl-dev libgtk-3-dev libpango1.0-dev libxtst-dev xdg-utils libc6 xdg-utils zlib1g libpng16-16 libasound2 libbsd-dev zip libblkid1 libdbus-1-3 libexpat1 libgpg-error0 liblzma5 libmount1 libpcre3 libselinux1 libsystemd0 libuuid1
run: sudo apt install axel libasound2-dev libavcodec-dev libavformat-dev libavutil-dev libgl-dev libgtk-3-dev libpango1.0-dev libxtst-dev xdg-utils libc6 xdg-utils zlib1g libpng16-16 libasound2 libbsd-dev zip libblkid1 libdbus-1-3 libexpat1 libgpg-error0 liblzma5 libmount1 libpcre3 libselinux1 libsystemd0 libuuid1
- uses: actions/checkout@v2
- uses: actions/checkout@v2
- name: Setup java
- name: Setup java
uses: joschi/setup-jdk@v2
uses: joschi/setup-jdk@v2
with:
with:
java-version: 16
java-version: 16
- name: Setup JavaFX
- name: Setup JavaFX
run: |
run: |
cd /tmp
cd /tmp
axel -n 8 https://download2.gluonhq.com/openjfx/17/openjfx-17-ea+11_linux-x64_bin-jmods.zip
axel -n 8 https://download2.gluonhq.com/openjfx/17/openjfx-17-ea+12_linux-x64_bin-jmods.zip
unzip /tmp/openjfx-17-ea+11_linux-x64_bin-jmods.zip -d /tmp
unzip /tmp/openjfx-17-ea+12_linux-x64_bin-jmods.zip -d /tmp
- name: Download GraalVM 21.1.0
- name: Download GraalVM 21.1.0
run: |
run: |
cd /tmp
cd /tmp
axel -n 8 https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-21.1.0/graalvm-ce-java11-linux-amd64-21.1.0.tar.gz
axel -n 8 https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-21.1.0/graalvm-ce-java11-linux-amd64-21.1.0.tar.gz
tar -xvzf *.gz
tar -xvzf *.gz
- name: Install native-image
- name: Install native-image
run: |
run: |
cd /tmp/graalvm-ce-java11-21.1.0/bin
cd /tmp/graalvm-ce-java11-21.1.0/bin
./gu install native-image
./gu install native-image
- name: Download built jars
- name: Download built jars
uses: dawidd6/action-download-artifact@v2
uses: dawidd6/action-download-artifact@v2
with:
with:
workflow: init.yml
workflow: init.yml
name: built-jars
name: built-jars
path: target/lib/
path: target/lib/
- name: Download REQ_MODULES
- name: Download REQ_MODULES
uses: dawidd6/action-download-artifact@v2
uses: dawidd6/action-download-artifact@v2
with:
with:
workflow: init.yml
workflow: init.yml
name: req_modules
name: req_modules
- name: Download VERSION
- name: Download VERSION
uses: dawidd6/action-download-artifact@v2
uses: dawidd6/action-download-artifact@v2
with:
with:
workflow: init.yml
workflow: init.yml
name: version
name: version
- name: Add VERSION to environment
- name: Add VERSION to environment
run: |
run: |
echo "VERSION=$(<version.txt)" >> $GITHUB_ENV
echo "VERSION=$(<version.txt)" >> $GITHUB_ENV
- name: Add REQ_MODULES to environment
- name: Add REQ_MODULES to environment
run: |
run: |
echo "REQ_MODULES=$(<req_modules.txt)" >> $GITHUB_ENV
echo "REQ_MODULES=$(<req_modules.txt)" >> $GITHUB_ENV
- name: Download build-date
- name: Download build-date
uses: dawidd6/action-download-artifact@v2
uses: dawidd6/action-download-artifact@v2
with:
with:
workflow: init.yml
workflow: init.yml
name: build-date
name: build-date
path: src/main/resources/com/stream_pi/client/
path: src/main/resources/com/stream_pi/client/
- name: Create Linux x64 DEB, Linux x64 APP IMAGE, Android aarch64 APK, Linux Arm32 ZIP
- name: Create Linux x64 DEB, Linux x64 APP IMAGE, Android aarch64 APK, Linux Arm32 ZIP
run: |
run: |
# Create DEB
# Create DEB
.github/scripts/jpackage.sh \
.github/scripts/jpackage.sh \
--icon assets/linux-icon.png \
--icon assets/linux-icon.png \
--app-version ${{ env.VERSION }} \
--app-version ${{ env.VERSION }} \
--linux-menu-group "Stream-Pi" \
--linux-menu-group "Stream-Pi" \
--license-file LICENSE.txt \
--license-file LICENSE.txt \
--type deb
--type deb
# Create App Image
# Create App Image
.github/scripts/jpackage.sh \
.github/scripts/jpackage.sh \
--icon assets/linux-icon.png \
--icon assets/linux-icon.png \
--app-version ${{ env.VERSION }} \
--app-version ${{ env.VERSION }} \
--type app-image
--type app-image
export GRAALVM_HOME=/tmp/graalvm-ce-java11-21.1.0/
export GRAALVM_HOME=/tmp/graalvm-ce-java11-21.1.0/
mvn -Pandroid gluonfx:build gluonfx:package
mvn -Pandroid gluonfx:build gluonfx:package
mv target/gluonfx/aarch64-android/gvm/*.apk ${{ env.INSTALL_DIR }}/stream-pi-client-android-aarch64-${{ env.VERSION }}.apk
mv target/gluonfx/aarch64-android/gvm/*.apk ${{ env.INSTALL_DIR }}/stream-pi-client-android-aarch64-${{ env.VERSION }}.apk
cd $INSTALL_DIR
cd $INSTALL_DIR
mv *.deb stream-pi-client-linux-x64-${{ env.VERSION }}-debian.deb
mv *.deb stream-pi-client-linux-x64-${{ env.VERSION }}-debian.deb
mv 'Stream-Pi Client' stream-pi-client-${{ env.VERSION }}
mv 'Stream-Pi Client' stream-pi-client-${{ env.VERSION }}
zip -r stream-pi-client-linux-x64-${{ env.VERSION }}-executable.zip stream-pi-client-${{ env.VERSION }}
zip -r stream-pi-client-linux-x64-${{ env.VERSION }}-executable.zip stream-pi-client-${{ env.VERSION }}
rm -r stream-pi-client-${{ env.VERSION }}
rm -r stream-pi-client-${{ env.VERSION }}
env:
env:
MAIN_CLASS: com.stream_pi.client.Main
MAIN_CLASS: com.stream_pi.client.Main
JAVAFX_JMODS: /tmp/javafx-jmods-17/
JAVAFX_JMODS: /tmp/javafx-jmods-17/
JPACKAGE_HOME: ${{ env.JAVA_HOME }}
JPACKAGE_HOME: ${{ env.JAVA_HOME }}
INSTALL_DIR: target/install
INSTALL_DIR: target/install
- name: Saving Linux x64 DEB
- name: Saving Linux x64 DEB
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v2
with:
with:
name: linux-deb
name: linux-deb
path: target/install/stream-pi-client-linux-x64-${{ env.VERSION }}-debian.deb
path: target/install/stream-pi-client-linux-x64-${{ env.VERSION }}-debian.deb
- name: Saving Linux x64 ZIP
- name: Saving Linux x64 ZIP
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v2
with:
with:
name: linux-zip
name: linux-zip
path: target/install/stream-pi-client-linux-x64-${{ env.VERSION }}-executable.zip
path: target/install/stream-pi-client-linux-x64-${{ env.VERSION }}-executable.zip
- name: Saving Android aarch64 APK
- name: Saving Android aarch64 APK
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v2
with:
with:
name: android-apk
name: android-apk
path: target/install/*.apk
path: target/install/*.apk
build-macos:
build-macos:
runs-on: macos-10.15
runs-on: macos-10.15
steps:
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v2
- name: Setup java
- name: Setup java
uses: joschi/setup-jdk@v2
uses: joschi/setup-jdk@v2
with:
with:
java-version: 16
java-version: 16
- name: Setup JavaFX
- name: Setup JavaFX
run: |
run: |
wget -P /tmp https://download2.gluonhq.com/openjfx/17/openjfx-17-ea+11_linux-x64_bin-jmods.zip
wget -P /tmp https://download2.gluonhq.com/openjfx/17/openjfx-17-ea+12_linux-x64_bin-jmods.zip
unzip /tmp/openjfx-17-ea+11_linux-x64_bin-jmods.zip -d /tmp
unzip /tmp/openjfx-17-ea+12_linux-x64_bin-jmods.zip -d /tmp
- name: Download built jars
- name: Download built jars
uses: dawidd6/action-download-artifact@v2
uses: dawidd6/action-download-artifact@v2
with:
with:
workflow: init.yml
workflow: init.yml
name: built-jars
name: built-jars
path: target/lib/
path: target/lib/
- name: Download REQ_MODULES
- name: Download REQ_MODULES
uses: dawidd6/action-download-artifact@v2
uses: dawidd6/action-download-artifact@v2
with:
with:
workflow: init.yml
workflow: init.yml
name: req_modules
name: req_modules
- name: Download VERSION
- name: Download VERSION
uses: dawidd6/action-download-artifact@v2
uses: dawidd6/action-download-artifact@v2
with:
with:
workflow: init.yml
workflow: init.yml
name: version
name: version
- name: Add VERSION to environment
- name: Add VERSION to environment
run: |
run: |
echo "VERSION=$(<version.txt)" >> $GITHUB_ENV
echo "VERSION=$(<version.txt)" >> $GITHUB_ENV
- name: Add REQ_MODULES to environment
- name: Add REQ_MODULES to environment
run: |
run: |
echo "REQ_MODULES=$(<req_modules.txt)" >> $GITHUB_ENV
echo "REQ_MODULES=$(<req_modules.txt)" >> $GITHUB_ENV
- name: Create DMG
- name: Create DMG
run: |
run: |
# Create DMG
# Create DMG
.github/scripts/jpackage.sh \
.github/scripts/jpackage.sh \
--icon assets/macos-icon.icns \
--icon assets/macos-icon.icns \
--license-file LICENSE.txt \
--license-file LICENSE.txt \
--type dmg
--type dmg
cd $INSTALL_DIR
cd $INSTALL_DIR
mv *.dmg stream-pi-client-macos-x64-${{ env.VERSION }}.dmg
mv *.dmg stream-pi-client-macos-x64-${{ env.VERSION }}.dmg
env:
env:
MAIN_CLASS: com.stream_pi.client.Main
MAIN_CLASS: com.stream_pi.client.Main
JAVAFX_JMODS: /tmp/javafx-jmods-17/
JAVAFX_JMODS: /tmp/javafx-jmods-17/
JPACKAGE_HOME: ${{ env.JAVA_HOME }}
JPACKAGE_HOME: ${{ env.JAVA_HOME }}
INSTALL_DIR: target/install
INSTALL_DIR: target/install
- name: Saving MacOS x64 DMG
- name: Saving MacOS x64 DMG
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v2
with:
with:
name: macos-dmg
name: macos-dmg
path: target/install/stream-pi-client-macos-x64-${{ env.VERSION }}.dmg
path: target/install/stream-pi-client-macos-x64-${{ env.VERSION }}.dmg
build-windows:
build-windows:
runs-on: windows-2019
runs-on: windows-2019
steps:
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v2
- name: Setup java
- name: Setup java
uses: joschi/setup-jdk@v2
uses: joschi/setup-jdk@v2
with:
with:
java-version: 16
java-version: 16
- name: Download REQ_MODULES
- name: Download REQ_MODULES
uses: dawidd6/action-download-artifact@v2
uses: dawidd6/action-download-artifact@v2
with:
with:
workflow: init.yml
workflow: init.yml
name: req_modules
name: req_modules
- name: Download VERSION
- name: Download VERSION
uses: dawidd6/action-download-artifact@v2
uses: dawidd6/action-download-artifact@v2
with:
with:
workflow: init.yml
workflow: init.yml
name: version
name: version
- name: Setup JavaFX
- name: Setup JavaFX
run: |
run: |
bitsadmin /Transfer DownloadJavaFX https://download2.gluonhq.com/openjfx/17/openjfx-17-ea+11_windows-x64_bin-jmods.zip D:\openjfx-17-ea+11_windows-x64_bin-jmods.zip
bitsadmin /Transfer DownloadJavaFX https://download2.gluonhq.com/openjfx/17/openjfx-17-ea+12_windows-x64_bin-jmods.zip D:\openjfx-17-ea+12_windows-x64_bin-jmods.zip
Expand-Archive -Force D:\openjfx-17-ea+11_windows-x64_bin-jmods.zip D:\
Expand-Archive -Force D:\openjfx-17-ea+12_windows-x64_bin-jmods.zip D:\
- name: Download built jars
- name: Download built jars
uses: dawidd6/action-download-artifact@v2
uses: dawidd6/action-download-artifact@v2
with:
with:
workflow: init.yml
workflow: init.yml
name: built-jars
name: built-jars
path: target/lib/
path: target/lib/
- name: Create Bundle using JPackage
- name: Create Bundle using JPackage
id: project
id: project
shell: cmd
shell: cmd
run: |
run: |
call .github\scripts\jpackage.bat
call .github\scripts\jpackage.bat
env:
env:
MAIN_CLASS: com.stream_pi.client.Main
MAIN_CLASS: com.stream_pi.client.Main
JAVAFX_JMODS: D:\javafx-jmods-17\
JAVAFX_JMODS: D:\javafx-jmods-17\
JPACKAGE_HOME: ${{ env.JAVA_HOME }}
JPACKAGE_HOME: ${{ env.JAVA_HOME }}
INSTALL_DIR: target/install
INSTALL_DIR: target/install
- name: Saving Windows x64 EXE
- name: Saving Windows x64 EXE
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v2
with:
with:
name: windows-msi
name: windows-msi
path: target/install/*.msi
path: target/install/*.msi
armv32_job:
armv32_job:
runs-on: ubuntu-18.04
runs-on: ubuntu-18.04
steps:
steps:
- uses: actions/checkout@v2.1.0
- uses: actions/checkout@v2.1.0
- name: Download VERSION
- name: Download VERSION
uses: dawidd6/action-download-artifact@v2
uses: dawidd6/action-download-artifact@v2
with:
with:
workflow: init.yml
workflow: init.yml
name: version
name: version
- name: Add VERSION to environment
- name: Add VERSION to environment
run: |
run: |
echo "VERSION=$(<version.txt)" >> $GITHUB_ENV
echo "VERSION=$(<version.txt)" >> $GITHUB_ENV
- name: Download built jars
- name: Download built jars
uses: dawidd6/action-download-artifact@v2
uses: dawidd6/action-download-artifact@v2
with:
with:
workflow: init.yml
workflow: init.yml
name: built-jars
name: built-jars
path: target/lib/
path: target/lib/
- uses: uraimo/run-on-arch-action@v2.0.5
- uses: uraimo/run-on-arch-action@v2.0.5
name: Build & save Linux ARM32 ZIP
name: Build & save Linux ARM32 ZIP
with:
with:
arch: armv6
arch: armv6
distro: buster
distro: buster
run: |
run: |
sudo apt update
sudo apt update
sudo apt install axel unzip zip
sudo apt install axel unzip zip
VERSION=$(<version.txt)
VERSION=$(<version.txt)
INSTALL_DIR=target/install
INSTALL_DIR=target/install
mkdir -p $INSTALL_DIR
mkdir -p $INSTALL_DIR
mv target/lib/* $INSTALL_DIR
mv target/lib/* $INSTALL_DIR
axel -n 8 https://download2.gluonhq.com/openjfx/17/openjfx-17-ea+11_linux-arm32_bin-sdk.zip
axel -n 8 https://download2.gluonhq.com/openjfx/17/openjfx-17-ea+12_linux-arm32_bin-sdk.zip
unzip openjfx-17-ea+11_linux-arm32_bin-sdk.zip -d javafx-sdk-arm32
unzip openjfx-17-ea+12_linux-arm32_bin-sdk.zip -d javafx-sdk-arm32
mv javafx-sdk-arm32/javafx-sdk-17/legal javafx-sdk-arm32/javafx-sdk-17/javafx-legal
mv javafx-sdk-arm32/javafx-sdk-17/legal javafx-sdk-arm32/javafx-sdk-17/javafx-legal
mv javafx-sdk-arm32/javafx-sdk-17/lib/libgluon_drm* javafx-sdk-arm32/javafx-sdk-17/lib/libgluon_drm.so
mv javafx-sdk-arm32/javafx-sdk-17/lib/libgluon_drm* javafx-sdk-arm32/javafx-sdk-17/lib/libgluon_drm.so
mv javafx-sdk-arm32/javafx-sdk-17/lib/* $INSTALL_DIR/
mv javafx-sdk-arm32/javafx-sdk-17/lib/* $INSTALL_DIR/
cp assets/arm32-launchers/run_console $INSTALL_DIR/run_console
cp assets/arm32-launchers/run_console $INSTALL_DIR/run_console
cp assets/arm32-launchers/run_desktop $INSTALL_DIR/run_desktop
cp assets/arm32-launchers/run_desktop $INSTALL_DIR/run_desktop
chmod +x $INSTALL_DIR/run_desktop
chmod +x $INSTALL_DIR/run_desktop
chmod +x $INSTALL_DIR/run_console
chmod +x $INSTALL_DIR/run_console
#Download jdk
#Download jdk
axel -n 8 https://cdn.azul.com/zulu-embedded/bin/zulu11.48.21-ca-jdk11.0.11-linux_aarch32hf.tar.gz
axel -n 8 https://cdn.azul.com/zulu-embedded/bin/zulu11.48.21-ca-jdk11.0.11-linux_aarch32hf.tar.gz
tar -xvzf zulu11.48.21-ca-jdk11.0.11-linux_aarch32hf.tar.gz
tar -xvzf zulu11.48.21-ca-jdk11.0.11-linux_aarch32hf.tar.gz
#Run jpackage
#Run jpackage
zulu11.48.21-ca-jdk11.0.11-linux_aarch32hf/bin/jlink --no-header-files --no-man-pages --add-modules java.base,java.logging,java.net.http,java.scripting,jdk.jsobject,jdk.unsupported,jdk.unsupported.desktop,jdk.xml.dom,java.xml,java.management,jdk.localedata,java.sql,jdk.crypto.ec --output $INSTALL_DIR/jre
zulu11.48.21-ca-jdk11.0.11-linux_aarch32hf/bin/jlink --no-header-files --no-man-pages --add-modules java.base,java.logging,java.net.http,java.scripting,jdk.jsobject,jdk.unsupported,jdk.unsupported.desktop,jdk.xml.dom,java.xml,java.management,jdk.localedata,java.sql,jdk.crypto.ec --output $INSTALL_DIR/jre
cd $INSTALL_DIR
cd $INSTALL_DIR
zip -r stream-pi-client-linux-arm32-$VERSION-executable.zip *
zip -r stream-pi-client-linux-arm32-$VERSION-executable.zip *
- name: Saving Linux ARM32 ZIP
- name: Saving Linux ARM32 ZIP
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v2
with:
with:
name: linux-arm32-zip
name: linux-arm32-zip
path: target/install/stream-pi-client-linux-arm32-${{ env.VERSION }}-executable.zip
path: target/install/stream-pi-client-linux-arm32-${{ env.VERSION }}-executable.zip
name: Init
name: Init
on: [push]
on: [push]
jobs:
jobs:
init:
init:
runs-on: ubuntu-20.04
runs-on: ubuntu-20.04
steps:
steps:
- name: Install packages
- name: Install packages
run: sudo apt install unzip axel
run: sudo apt install unzip axel
- uses: actions/checkout@v2
- uses: actions/checkout@v2
- name: Setup java
- name: Setup java
uses: joschi/setup-jdk@v2
uses: joschi/setup-jdk@v2
with:
with:
java-version: 16
java-version: 16
- name: Setup JavaFX
- name: Setup JavaFX
run: |
run: |
cd /tmp
cd /tmp
axel -n 8 https://download2.gluonhq.com/openjfx/17/openjfx-17-ea+11_linux-x64_bin-sdk.zip
axel -n 8 https://download2.gluonhq.com/openjfx/17/openjfx-17-ea+12_linux-x64_bin-sdk.zip
unzip /tmp/openjfx-17-ea+11_linux-x64_bin-sdk.zip -d /tmp
unzip /tmp/openjfx-17-ea+12_linux-x64_bin-sdk.zip -d /tmp
- name: Set Timezone
- name: Set Timezone
uses: szenius/set-timezone@v1.0
uses: szenius/set-timezone@v1.0
with:
with:
timezoneLinux: "Asia/Kolkata"
timezoneLinux: "Asia/Kolkata"
- name: Build Jars
- name: Build Jars
run: |
run: |
echo $(date +'%d-%m-%Y %H:%M:%S %Z') > src/main/resources/com/stream_pi/client/build-date
echo $(date +'%d-%m-%Y %H:%M:%S %Z') > src/main/resources/com/stream_pi/client/build-date
echo Build Date/Time: cat src/main/resources/com/stream_pi/client/build-date
echo Build Date/Time: cat src/main/resources/com/stream_pi/client/build-date
mvn -X package
mvn -X package
- name: Save built jars
- name: Save built jars
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v2
with:
with:
name: built-jars
name: built-jars
path: target/lib/*
path: target/lib/*
- name: Set Version
- name: Set Version
run: |
run: |
echo "VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
echo "VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
- name: Calculate required modules
- name: Calculate required modules
run: |
run: |
JDEPS_MODULES=$(jdeps --module-path $JAVAFX_SDK/:target/lib/ --print-module-deps --ignore-missing-deps target/lib/client-$VERSION.jar)
JDEPS_MODULES=$(jdeps --module-path $JAVAFX_SDK/:target/lib/ --print-module-deps --ignore-missing-deps target/lib/client-$VERSION.jar)
JAVAFX_MODULES=javafx.fxml,javafx.media,javafx.swing,javafx.web
JAVAFX_MODULES=javafx.fxml,javafx.media,javafx.swing,javafx.web
EXTRA_MODULES=java.base,java.logging,java.net.http,java.scripting,jdk.jsobject,jdk.unsupported,jdk.unsupported.desktop,jdk.xml.dom,java.xml,java.management,jdk.localedata,java.sql,jdk.crypto.ec
EXTRA_MODULES=java.base,java.logging,java.net.http,java.scripting,jdk.jsobject,jdk.unsupported,jdk.unsupported.desktop,jdk.xml.dom,java.xml,java.management,jdk.localedata,java.sql,jdk.crypto.ec
echo "REQ_MODULES=$EXTRA_MODULES,$JDEPS_MODULES,$JAVAFX_MODULES" >> $GITHUB_ENV
echo "REQ_MODULES=$EXTRA_MODULES,$JDEPS_MODULES,$JAVAFX_MODULES" >> $GITHUB_ENV
env:
env:
JAVAFX_SDK: /tmp/javafx-sdk-17/lib/
JAVAFX_SDK: /tmp/javafx-sdk-17/lib/
- name: Saving REQ_MODULES
- name: Saving REQ_MODULES
run: |
run: |
echo $REQ_MODULES > req_modules.txt
echo $REQ_MODULES > req_modules.txt
- name: Uploading REQ_MODULES
- name: Uploading REQ_MODULES
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v2
with:
with:
name: req_modules
name: req_modules
path: req_modules.txt
path: req_modules.txt
- name: Saving VERSION
- name: Saving VERSION
run: |
run: |
echo $VERSION > version.txt
echo $VERSION > version.txt
- name: Uploading VERSION
- name: Uploading VERSION
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v2
with:
with:
name: version
name: version
path: version.txt
path: version.txt
- name: Uploading build-date
- name: Uploading build-date
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v2
with:
with:
name: build-date
name: build-date
path: src/main/resources/com/stream_pi/client/build-date
path: src/main/resources/com/stream_pi/client/build-date
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<modelVersion>4.0.0</modelVersion>
<groupId>com.stream-pi</groupId>
<groupId>com.stream-pi</groupId>
<artifactId>client</artifactId>
<artifactId>client</artifactId>
<version>1.0.0-EA+3-SNAPSHOT</version>
<version>1.0.0-EA+3-SNAPSHOT</version>
<url>https://stream-pi.com/</url>
<url>https://stream-pi.com/</url>
<properties>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.release>11</maven.compiler.release>
<maven.compiler.release>11</maven.compiler.release>
<javafx.version>17-ea+11</javafx.version>
<javafx.version>17-ea+12</javafx.version>
<gluonfx.plugin.version>1.0.0</gluonfx.plugin.version>
<gluonfx.plugin.version>1.0.0</gluonfx.plugin.version>
<ikonli.version>11.5.0</ikonli.version>
<ikonli.version>11.5.0</ikonli.version>
<action.api.version>1.0.0-SNAPSHOT</action.api.version>
<action.api.version>1.0.0-SNAPSHOT</action.api.version>
<util.version>1.0.0-SNAPSHOT</util.version>
<util.version>1.0.0-SNAPSHOT</util.version>
<theme.api.version>1.0.0-SNAPSHOT</theme.api.version>
<theme.api.version>1.0.0-SNAPSHOT</theme.api.version>
<controlsfx.version>11.1.0</controlsfx.version>
<controlsfx.version>11.1.0</controlsfx.version>
<attach.version>4.0.11</attach.version>
<attach.version>4.0.11</attach.version>
<main.class.name>com.stream_pi.client.Main</main.class.name>
<main.class.name>com.stream_pi.client.Main</main.class.name>
<source.plugin.version>2.2.1</source.plugin.version>
<source.plugin.version>2.2.1</source.plugin.version>
<javadoc.plugin.version>3.1.0</javadoc.plugin.version>
<javadoc.plugin.version>3.1.0</javadoc.plugin.version>
<gpg.plugin.version>1.6</gpg.plugin.version>
<gpg.plugin.version>1.6</gpg.plugin.version>
<javafx.maven.plugin.version>0.0.6</javafx.maven.plugin.version>
<javafx.maven.plugin.version>0.0.6</javafx.maven.plugin.version>
<maven-surefire-plugin.version>3.0.0-M5</maven-surefire-plugin.version>
<maven-surefire-plugin.version>3.0.0-M5</maven-surefire-plugin.version>
<jar.plugin>2.3.1</jar.plugin>
<jar.plugin>2.3.1</jar.plugin>
</properties>
</properties>
<dependencies>
<dependencies>
<dependency>
<dependency>
<groupId>org.openjfx</groupId>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<artifactId>javafx-controls</artifactId>
<version>${javafx.version}</version>
<version>${javafx.version}</version>
<!--scope>${javafx.scope}</scope>
<!--scope>${javafx.scope}</scope>
<systemPath>${javafx.systemPath}/javafx.controls.jar</systemPath-->
<systemPath>${javafx.systemPath}/javafx.controls.jar</systemPath-->
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>org.openjfx</groupId>
<groupId>org.openjfx</groupId>
<artifactId>javafx-base</artifactId>
<artifactId>javafx-base</artifactId>
<version>${javafx.version}</version>
<version>${javafx.version}</version>
<!--scope>${javafx.scope}</scope>
<!--scope>${javafx.scope}</scope>
<systemPath>${javafx.systemPath}/javafx.base.jar</systemPath-->
<systemPath>${javafx.systemPath}/javafx.base.jar</systemPath-->
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>org.openjfx</groupId>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId>
<artifactId>javafx-graphics</artifactId>
<version>${javafx.version}</version>
<version>${javafx.version}</version>
<!--scope>${javafx.scope}</scope>
<!--scope>${javafx.scope}</scope>
<systemPath>${javafx.systemPath}/javafx.graphics.jar</systemPath-->
<systemPath>${javafx.systemPath}/javafx.graphics.jar</systemPath-->
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>org.kordamp.ikonli</groupId>
<groupId>org.kordamp.ikonli</groupId>
<artifactId>ikonli-fontawesome5-pack</artifactId>
<artifactId>ikonli-fontawesome5-pack</artifactId>
<version>${ikonli.version}</version>
<version>${ikonli.version}</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>org.kordamp.ikonli</groupId>
<groupId>org.kordamp.ikonli</groupId>
<artifactId>ikonli-javafx</artifactId>
<artifactId>ikonli-javafx</artifactId>
<version>${ikonli.version}</version>
<version>${ikonli.version}</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>com.stream-pi</groupId>
<groupId>com.stream-pi</groupId>
<artifactId>action-api</artifactId>
<artifactId>action-api</artifactId>
<version>${action.api.version}</version>
<version>${action.api.version}</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>com.stream-pi</groupId>
<groupId>com.stream-pi</groupId>
<artifactId>theme-api</artifactId>
<artifactId>theme-api</artifactId>
<version>${theme.api.version}</version>
<version>${theme.api.version}</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>com.stream-pi</groupId>
<groupId>com.stream-pi</groupId>
<artifactId>util</artifactId>
<artifactId>util</artifactId>
<version>${util.version}</version>
<version>${util.version}</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>com.gluonhq.attach</groupId>
<groupId>com.gluonhq.attach</groupId>
<artifactId>lifecycle</artifactId>
<artifactId>lifecycle</artifactId>
<version>${attach.version}</version>
<version>${attach.version}</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>com.gluonhq.attach</groupId>
<groupId>com.gluonhq.attach</groupId>
<artifactId>util</artifactId>
<artifactId>util</artifactId>
<version>${attach.version}</version>
<version>${attach.version}</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>com.gluonhq.attach</groupId>
<groupId>com.gluonhq.attach</groupId>
<artifactId>orientation</artifactId>
<artifactId>orientation</artifactId>
<version>${attach.version}</version>
<version>${attach.version}</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>com.gluonhq.attach</groupId>
<groupId>com.gluonhq.attach</groupId>
<artifactId>storage</artifactId>
<artifactId>storage</artifactId>
<version>${attach.version}</version>
<version>${attach.version}</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>com.gluonhq.attach</groupId>
<groupId>com.gluonhq.attach</groupId>
<artifactId>browser</artifactId>
<artifactId>browser</artifactId>
<version>${attach.version}</version>
<version>${attach.version}</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>com.gluonhq.attach</groupId>
<groupId>com.gluonhq.attach</groupId>
<artifactId>vibration</artifactId>
<artifactId>vibration</artifactId>
<version>${attach.version}</version>
<version>${attach.version}</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>org.controlsfx</groupId>
<groupId>org.controlsfx</groupId>
<artifactId>controlsfx</artifactId>
<artifactId>controlsfx</artifactId>
<version>${controlsfx.version}</version>
<version>${controlsfx.version}</version>
</dependency>
</dependency>
</dependencies>
</dependencies>
<repositories>
<repositories>
<repository>
<repository>
<id>gluon-releases</id>
<id>gluon-releases</id>
<url>http://nexus.gluonhq.com/nexus/content/repositories/releases/</url>
<url>http://nexus.gluonhq.com/nexus/content/repositories/releases/</url>
</repository>
</repository>
<repository>
<repository>
<id>sonatype-snapshot</id>
<id>sonatype-snapshot</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</repository>
</repository>
</repositories>
</repositories>
<build>
<build>
<plugins>
<plugins>
<plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<executions>
<execution>
<execution>
<phase>package</phase>
<phase>package</phase>
<goals>
<goals>
<goal>copy-dependencies</goal>
<goal>copy-dependencies</goal>
</goals>
</goals>
<configuration>
<configuration>
<outputDirectory>target/lib</outputDirectory>
<outputDirectory>target/lib</outputDirectory>
<excludeGroupIds>org.openjfx</excludeGroupIds>
<excludeGroupIds>org.openjfx</excludeGroupIds>
</configuration>
</configuration>
</execution>
</execution>
</executions>
</executions>
</plugin>
</plugin>
<plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<artifactId>maven-jar-plugin</artifactId>
<version>${jar.plugin}</version>
<version>${jar.plugin}</version>
<configuration>
<configuration>
<outputDirectory>target/lib/</outputDirectory>
<outputDirectory>target/lib/</outputDirectory>
</configuration>
</configuration>
</plugin>
</plugin>
<plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<version>3.8.1</version>
</plugin>
</plugin>
<plugin>
<plugin>
<groupId>org.openjfx</groupId>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<artifactId>javafx-maven-plugin</artifactId>
<version>${javafx.maven.plugin.version}</version>
<version>${javafx.maven.plugin.version}</version>
<configuration>
<configuration>
<commandlineArgs>-DStream-Pi.defaultFullScreenMode=false -DStream-Pi.enableScreenSaverFeature=false</commandlineArgs>
<commandlineArgs>-DStream-Pi.defaultFullScreenMode=false -DStream-Pi.enableScreenSaverFeature=false</commandlineArgs>
<options>
<options>
<option>-Dprism.verbose=true</option>
<option>-Dprism.verbose=true</option>
<option>-Djavafx.verbose=true</option>
<option>-Djavafx.verbose=true</option>
<option>-Dprism.forceGPU=true</option>
<option>-Dprism.forceGPU=true</option>
</options>
</options>
<stripDebug>true</stripDebug>
<stripDebug>true</stripDebug>
<compress>2</compress>
<compress>2</compress>
<noHeaderFiles>true</noHeaderFiles>
<noHeaderFiles>true</noHeaderFiles>
<noManPages>true</noManPages>
<noManPages>true</noManPages>
<mainClass>${main.class.name}</mainClass>
<mainClass>${main.class.name}</mainClass>
<!--options>${additional.javafx.plugin.options}</options-->
<!--options>${additional.javafx.plugin.options}</options-->
</configuration>
</configuration>
</plugin>
</plugin>
<plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.2.0</version>
<version>3.2.0</version>
<configuration>
<configuration>
<includeEmptyDirs>true</includeEmptyDirs>
<includeEmptyDirs>true</includeEmptyDirs>
</configuration>
</configuration>
</plugin>
</plugin>
<plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<version>${maven-surefire-plugin.version}</version>
</plugin>
</plugin>
</plugins>
</plugins>
</build>
</build>
<pluginRepositories>
<pluginRepositories>
<pluginRepository>
<pluginRepository>
<id>gluon-releases</id>
<id>gluon-releases</id>
<url>http://nexus.gluonhq.com/nexus/content/repositories/releases/</url>
<url>http://nexus.gluonhq.com/nexus/content/repositories/releases/</url>
</pluginRepository>
</pluginRepository>
<pluginRepository>
<pluginRepository>
<id>gluon-snapshots</id>
<id>gluon-snapshots</id>
<url>https://nexus.gluonhq.com/nexus/content/repositories/public-snapshots</url>
<url>https://nexus.gluonhq.com/nexus/content/repositories/public-snapshots</url>
</pluginRepository>
</pluginRepository>
<pluginRepository>
<pluginRepository>
<id>Sonatype</id>
<id>Sonatype</id>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
</pluginRepository>
</pluginRepository>
</pluginRepositories>
</pluginRepositories>
<profiles>
<profiles>
<profile>
<profile>
<id>android</id>
<id>android</id>
<build>
<build>
<plugins>
<plugins>
<plugin>
<plugin>
<groupId>com.gluonhq</groupId>
<groupId>com.gluonhq</groupId>
<artifactId>gluonfx-maven-plugin</artifactId>
<artifactId>gluonfx-maven-plugin</artifactId>
<version>${gluonfx.plugin.version}</version>
<version>${gluonfx.plugin.version}</version>
<configuration>
<configuration>
<target>android</target>
<target>android</target>
<mainClass>${main.class.name}</mainClass>
<mainClass>${main.class.name}</mainClass>
<verbose>true</verbose>
<verbose>true</verbose>
<nativeImageArgs>
<nativeImageArgs>
<list>--initialize-at-build-time=com.sun.org.apache.xml.internal.serializer.ToXMLStream</list>
<list>--initialize-at-build-time=com.sun.org.apache.xml.internal.serializer.ToXMLStream</list>
<list>-Dsvm.targetName=android</list>
<list>-Dsvm.targetName=android</list>
</nativeImageArgs>
</nativeImageArgs>
<bundlesList>
<bundlesList>
<list>com.sun.org.apache.xerces.internal.impl.msg.XMLMessages</list>
<list>com.sun.org.apache.xerces.internal.impl.msg.XMLMessages</list>
</bundlesList>
</bundlesList>
<attachList>
<attachList>
<list>lifecycle</list>
<list>lifecycle</list>
<list>storage</list>
<list>storage</list>
<list>browser</list>
<list>browser</list>
<list>vibration</list>
<list>vibration</list>
<list>orientation</list>
<list>orientation</list>
</attachList>
</attachList>
<reflectionList>
<reflectionList>
<list>java.util.logging.FileHandler</list>
<list>java.util.logging.FileHandler</list>
<list>com.stream_pi.client.window.settings.About.Contributor</list>
<list>com.stream_pi.client.window.settings.About.Contributor</list>
<list>javafx.scene.control.TableColumnBase</list>
<list>javafx.scene.control.TableColumnBase</list>
</reflectionList>
</reflectionList>
<mainClass>${main.class.name}</mainClass>
<mainClass>${main.class.name}</mainClass>
</configuration>
</configuration>
</plugin>
</plugin>
</plugins>
</plugins>
</build>
</build>
</profile>
</profile>
<profile>
<profile>
<id>ios</id>
<id>ios</id>
<build>
<build>
<plugins>
<plugins>
<plugin>
<plugin>
<groupId>com.gluonhq</groupId>
<groupId>com.gluonhq</groupId>
<artifactId>gluonfx-maven-plugin</artifactId>
<artifactId>gluonfx-maven-plugin</artifactId>
<version>${gluonfx.plugin.version}</version>
<version>${gluonfx.plugin.version}</version>
<configuration>
<configuration>
<target>ios</target>
<target>ios</target>
<mainClass>${main.class.name}</mainClass>
<mainClass>${main.class.name}</mainClass>
<verbose>true</verbose>
<verbose>true</verbose>
<nativeImageArgs>
<nativeImageArgs>
<list>--initialize-at-build-time=com.sun.org.apache.xml.internal.serializer.ToXMLStream</list>
<list>--initialize-at-build-time=com.sun.org.apache.xml.internal.serializer.ToXMLStream</list>
<list>-Dsvm.targetName=iOS</list>
<list>-Dsvm.targetName=iOS</list>
</nativeImageArgs>
</nativeImageArgs>
<bundlesList>
<bundlesList>
<list>com.sun.org.apache.xerces.internal.impl.msg.XMLMessages</list>
<list>com.sun.org.apache.xerces.internal.impl.msg.XMLMessages</list>
</bundlesList>
</bundlesList>
<attachList>
<attachList>
<list>lifecycle</list>
<list>lifecycle</list>
<list>storage</list>
<list>storage</list>
<list>browser</list>
<list>browser</list>
<list>vibration</list>
<list>vibration</list>
<list>orientation</list>
<list>orientation</list>
</attachList>
</attachList>
<reflectionList>
<reflectionList>
<list>java.util.logging.FileHandler</list>
<list>java.util.logging.FileHandler</list>
<list>com.stream_pi.client.window.settings.About.Contributor</list>
<list>com.stream_pi.client.window.settings.About.Contributor</list>
<list>javafx.scene.control.TableColumnBase</list>
<list>javafx.scene.control.TableColumnBase</list>
</reflectionList>
</reflectionList>
<mainClass>${main.class.name}</mainClass>
<mainClass>${main.class.name}</mainClass>
</configuration>
</configuration>
</plugin>
</plugin>
</plugins>
</plugins>
</build>
</build>
</profile>
</profile>
<profile>
<profile>
<id>linux-aarch64</id>
<id>linux-aarch64</id>
<build>
<build>
<plugins>
<plugins>
<plugin>
<plugin>
<groupId>com.gluonhq</groupId>
<groupId>com.gluonhq</groupId>
<artifactId>gluonfx-maven-plugin</artifactId>
<artifactId>gluonfx-maven-plugin</artifactId>
<version>${gluonfx.plugin.version}</version>
<version>${gluonfx.plugin.version}</version>
<configuration>
<configuration>
<target>linux-aarch64</target>
<target>linux-aarch64</target>
<mainClass>${main.class.name}</mainClass>
<mainClass>${main.class.name}</mainClass>
<remoteHostName>pi@pi-4b.local</remoteHostName>
<remoteHostName>pi@pi-4b.local</remoteHostName>
<remoteDir>/home/rnayabed/native/</remoteDir>
<remoteDir>/home/rnayabed/native/</remoteDir>
<runtimeArgs>
<runtimeArgs>
<arg>-Dmonocle.platform=EGL</arg>
<arg>-Dmonocle.platform=EGL</arg>
<arg>-Dembedded=monocle</arg>
<arg>-Dembedded=monocle</arg>
<arg>-Dglass.platform=Monocle</arg>
<arg>-Dglass.platform=Monocle</arg>
<arg>-Degl.displayid=/dev/dri/card1</arg>
<arg>-Degl.displayid=/dev/dri/card1</arg>
</runtimeArgs>
</runtimeArgs>
<verbose>true</verbose>
<verbose>true</verbose>
<nativeImageArgs>
<nativeImageArgs>
<list>--initialize-at-build-time=com.sun.org.apache.xml.internal.serializer.ToXMLStream</list>
<list>--initialize-at-build-time=com.sun.org.apache.xml.internal.serializer.ToXMLStream</list>
</nativeImageArgs>
</nativeImageArgs>
<bundlesList>
<bundlesList>
<list>com.sun.org.apache.xerces.internal.impl.msg.XMLMessages</list>
<list>com.sun.org.apache.xerces.internal.impl.msg.XMLMessages</list>
</bundlesList>
</bundlesList>
<attachList>
<attachList>
<list>lifecycle</list>
<list>lifecycle</list>
<list>storage</list>
<list>storage</list>
<list>browser</list>
<list>browser</list>
<list>vibration</list>
<list>vibration</list>
<list>orientation</list>
<list>orientation</list>
</attachList>
</attachList>
<reflectionList>
<reflectionList>
<list>java.util.logging.FileHandler</list>
<list>java.util.logging.FileHandler</list>
<list>com.stream_pi.client.window.settings.About.Contributor</list>
<list>com.stream_pi.client.window.settings.About.Contributor</list>
<list>javafx.scene.control.TableColumnBase</list>
<list>javafx.scene.control.TableColumnBase</list>
</reflectionList>
</reflectionList>
<mainClass>${main.class.name}</mainClass>
<mainClass>${main.class.name}</mainClass>
</configuration>
</configuration>
</plugin>
</plugin>
</plugins>
</plugins>
</build>
</build>
</profile>
</profile>
<profile>
<profile>
<id>release</id>
<id>release</id>
<build>
<build>
<plugins>
<plugins>
<plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<version>2.2.1</version>
<executions>
<executions>
<execution>
<execution>
<id>attach-sources</id>
<id>attach-sources</id>
<goals>
<goals>
<goal>jar-no-fork</goal>
<goal>jar-no-fork</goal>
</goals>
</goals>
</execution>
</execution>
</executions>
</executions>
</plugin>
</plugin>
<plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${javadoc.plugin.version}</version>
<version>${javadoc.plugin.version}</version>
<executions>
<executions>
<execution>
<execution>
<id>attach-javadocs</id>
<id>attach-javadocs</id>
<goals>
<goals>
<goal>jar</goal>
<goal>jar</goal>
</goals>
</goals>
</execution>
</execution>
</executions>
</executions>
<configuration>
<configuration>
<source>8</source>
<source>8</source>
</configuration>
</configuration>
</plugin>
</plugin>
<plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<artifactId>maven-gpg-plugin</artifactId>
<version>${gpg.plugin.version}</version>
<version>${gpg.plugin.version}</version>
<executions>
<executions>
<execution>
<execution>
<id>sign-artifacts</id>
<id>sign-artifacts</id>
<phase>verify</phase>
<phase>verify</phase>
<goals>
<goals>
<goal>sign</goal>
<goal>sign</goal>
</goals>
</goals>
<configuration>
<configuration>
<gpgArguments>
<gpgArguments>
<arg>--pinentry-mode</arg>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
<arg>loopback</arg>
</gpgArguments>
</gpgArguments>
</configuration>
</configuration>
</execution>
</execution>
</executions>
</executions>
</plugin>
</plugin>
</plugins>
</plugins>
</build>
</build>
</profile>
</profile>
</profiles>
</profiles>
<organization>
<organization>
<name>Stream Pi</name>
<name>Stream Pi</name>
<url>https://www.stream-pi.com</url>
<url>https://www.stream-pi.com</url>
</organization>
</organization>
<issueManagement>
<issueManagement>
<system>GitHub</system>
<system>GitHub</system>
<url>https://github.com/Stream-Pi/client/issues</url>
<url>https://github.com/Stream-Pi/client/issues</url>
</issueManagement>
</issueManagement>
<licenses>
<licenses>
<license>
<license>
<name>GPL-3.0 License</name>
<name>GPL-3.0 License</name>
<url>https://www.gnu.org/licenses/gpl-3.0.en.html</url>
<url>https://www.gnu.org/licenses/gpl-3.0.en.html</url>
<distribution>repo</distribution>
<distribution>repo</distribution>
</license>
</license>
</licenses>
</licenses>
<developers>
<developers>
<developer>
<developer>
<name>Debayan Sutradhar</name>
<name>Debayan Sutradhar</name>
<email>debayansutradhar3@gmail.com</email>
<email>debayansutradhar3@gmail.com</email>
<organization>Stream-Pi</organization>
<organization>Stream-Pi</organization>
<organizationUrl>https://www.stream-pi.com</organizationUrl>
<organizationUrl>https://www.stream-pi.com</organizationUrl>
</developer>
</developer>
<developer>
<developer>
<name>Abhinay Agarwal</name>
<name>Abhinay Agarwal</name>
<email>abhinay_agarwal@live.com</email>
<email>abhinay_agarwal@live.com</email>
<organization>Stream-Pi</organization>
<organization>Stream-Pi</organization>
<organizationUrl>https://www.stream-pi.com</organizationUrl>
<organizationUrl>https://www.stream-pi.com</organizationUrl>
</developer>
</developer>
</developers>
</developers>
<scm>
<scm>
<url>https://github.com/stream-pi/client</url>
<url>https://github.com/stream-pi/client</url>
<connection>scm:git:git://github.com/stream-pi/client.git</connection>
<connection>scm:git:git://github.com/stream-pi/client.git</connection>
<developerConnection>scm:git:ssh://git@github.com:stream-pi/client.git</developerConnection>
<developerConnection>scm:git:ssh://git@github.com:stream-pi/client.git</developerConnection>
</scm>
</scm>
<distributionManagement>
<distributionManagement>
<snapshotRepository>
<snapshotRepository>
<id>ossrh</id>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
</snapshotRepository>
<repository>
<repository>
<id>ossrh</id>
<id>ossrh</id>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</repository>
</distributionManagement>
</distributionManagement>
</project>
</project>
package com.stream_pi.client.window.settings.About;
package com.stream_pi.client.window.settings.About;
import com.stream_pi.action_api.ActionAPI;
import com.stream_pi.action_api.ActionAPI;
import com.stream_pi.client.Main;
import com.stream_pi.client.Main;
import com.stream_pi.client.controller.ClientListener;
import com.stream_pi.client.controller.ClientListener;
import com.stream_pi.client.info.ClientInfo;
import com.stream_pi.client.info.ClientInfo;
import javafx.application.HostServices;
import javafx.application.HostServices;
import javafx.event.Event;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.geometry.Pos;
import javafx.scene.CacheHint;
import javafx.scene.CacheHint;
import javafx.scene.control.*;
import javafx.scene.control.*;
import javafx.scene.image.Image;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.image.ImageView;
import javafx.scene.input.SwipeEvent;
import javafx.scene.input.SwipeEvent;
import javafx.scene.layout.HBox;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.scene.layout.VBox;
import java.net.URL;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.Paths;
import java.util.Objects;
import java.util.Objects;
import java.util.logging.Logger;
import java.util.logging.Logger;
public class AboutTab extends ScrollPane
public class AboutTab extends ScrollPane
{
{
private ClientListener clientListener;
private ClientListener clientListener;
private ContributorsTab contributorsTab;
private ContributorsTab contributorsTab;
private VBox mainVBox;
private VBox mainVBox;
public AboutTab(ClientListener clientListener)
public AboutTab(ClientListener clientListener)
{
{
this.clientListener = clientListener;
this.clientListener = clientListener;
getStyleClass().add("about_parent");
getStyleClass().add("about_parent");
setPadding(new Insets(5));
setPadding(new Insets(5));
mainVBox = new VBox();
mainVBox = new VBox();
mainVBox.getStyleClass().add("about");
mainVBox.getStyleClass().add("about");
mainVBox.setSpacing(5.0);
mainVBox.setSpacing(5.0);
mainVBox.setAlignment(Pos.TOP_CENTER);
mainVBox.setAlignment(Pos.TOP_CENTER);
Image appIcon = new Image(Objects.requireNonNull(Main.class.getResourceAsStream("app_icon.png")));
Image appIcon = new Image(Objects.requireNonNull(Main.class.getResourceAsStream("app_icon.png")));
ImageView appIconImageView = new ImageView(appIcon);
ImageView appIconImageView = new ImageView(appIcon);
appIconImageView.setFitHeight(146);
appIconImageView.setFitHeight(146);
appIconImageView.setFitWidth(132);
appIconImageView.setFitWidth(132);
Tab contributorsT = new Tab("Contributors");
Tab contributorsT = new Tab("Contributors");
contributorsTab = new ContributorsTab();
contributorsTab = new ContributorsTab();
contributorsT.setContent(contributorsTab);
contributorsT.setContent(contributorsTab);
TabPane tabPane = new TabPane();
TabPane tabPane = new TabPane();
tabPane.addEventFilter(SwipeEvent.ANY, Event::consume);
tabPane.addEventFilter(SwipeEvent.ANY, Event::consume);
tabPane.getStyleClass().add("settings_about_tab_internal");
tabPane.getStyleClass().add("settings_about_tab_internal");
tabPane.setTabClosingPolicy(TabPane.TabClosingPolicy.UNAVAILABLE);
tabPane.setTabClosingPolicy(TabPane.TabClosingPolicy.UNAVAILABLE);
tabPane.setMaxWidth(600);
tabPane.setMaxWidth(600);
VBox.setVgrow(tabPane, Priority.ALWAYS);
VBox.setVgrow(tabPane, Priority.ALWAYS);
Tab licenseTab = new Tab("License");
Tab licenseTab = new Tab("License");
licenseTab.setContent(new LicenseTab());
licenseTab.setContent(new LicenseTab());
Tab contactTab = new Tab("Contact");
Tab contactTab = new Tab("Contact");
contactTab.setContent(new ContactTab(clientListener));
contactTab.setContent(new ContactTab(clientListener));
tabPane.getTabs().addAll(licenseTab, contributorsT, contactTab);
tabPane.getTabs().addAll(licenseTab, contributorsT, contactTab);
Hyperlink donateButton = new Hyperlink("DONATE");
Hyperlink donateButton = new Hyperlink("DONATE");
donateButton.setOnAction(event -> openWebpage("https://www.patreon.com/streampi"));
donateButton.setOnAction(event -> openWebpage("https://www.patreon.com/streampi"));
donateButton.getStyleClass().add("about_donate_hyperlink");
donateButton.getStyleClass().add("about_donate_hyperlink");
ClientInfo clientInfo = ClientInfo.getInstance();
ClientInfo clientInfo = ClientInfo.getInstance();
Label versionText = new Label(clientInfo.getVersion().getText() + " - "+ clientInfo.getPlatform().getUIName() + " - "+ clientInfo.getReleaseStatus().getUIName());
Label versionText = new Label(clientInfo.getVersion().getText() + " - "+ clientInfo.getPlatform().getUIName() + " - "+ clientInfo.getReleaseStatus().getUIName());
versionText.getStyleClass().add("about_version_label");
versionText.getStyleClass().add("about_version_label");
Label commStandardLabel = new Label("Comm Standard "+clientInfo.getCommStandardVersion().getText());
Label commStandardLabel = new Label("Comm Standard "+clientInfo.getCommStandardVersion().getText());
commStandardLabel.getStyleClass().add("about_comm_standard_label");
commStandardLabel.getStyleClass().add("about_comm_standard_label");
Label minThemeAPILabel = new Label("Min ThemeAPI "+clientInfo.getMinThemeSupportVersion().getText());
Label minThemeAPILabel = new Label("Min ThemeAPI "+clientInfo.getMinThemeSupportVersion().getText());
minThemeAPILabel.getStyleClass().add("about_min_theme_api_label");
minThemeAPILabel.getStyleClass().add("about_min_theme_api_label");
Label minActionAPILabel = new Label("Min ActionAPI "+clientInfo.getMinPluginSupportVersion().getText());
Label minActionAPILabel = new Label("Min ActionAPI "+clientInfo.getMinPluginSupportVersion().getText());
minActionAPILabel.getStyleClass().add("about_min_action_api_label");
minActionAPILabel.getStyleClass().add("about_min_action_api_label");
Label currentActionAPILabel = new Label("ActionAPI "+ ActionAPI.API_VERSION.getText());
Label currentActionAPILabel = new Label("ActionAPI "+ ActionAPI.API_VERSION.getText());
currentActionAPILabel.getStyleClass().add("about_current_action_api_label");
currentActionAPILabel.getStyleClass().add("about_current_action_api_label");
HBox hBox1 = new HBox(versionText);
HBox hBox1 = new HBox(versionText);
hBox1.setAlignment(Pos.CENTER);
hBox1.setAlignment(Pos.CENTER);
hBox1.setSpacing(10);
hBox1.setSpacing(10);
Label javaVersionLabel = new Label("Java "+System.getProperty("java.version"));
javaVersionLabel.getStyleClass().add("about_java_version");
Label javafxVersionLabel = new Label("JavaFX "+System.getProperty("javafx.version"));
javafxVersionLabel.getStyleClass().add("about_javafx_version");
HBox hBox2 = new HBox(javaVersionLabel, getSep(),
javafxVersionLabel);
hBox2.setAlignment(Pos.CENTER);
hBox2.setSpacing(10);
Label disclaimerLabel = new Label("This contributor list shows only those who have contributed " +
Label disclaimerLabel = new Label("This contributor list shows only those who have contributed " +
"to the Client Source code.\nTo know about the contributors of Action API, Theme API, Util, " +
"to the Client Source code.\nTo know about the contributors of Action API, Theme API, Util, " +
"visit the respective repositories. If you want to know about the Core Team instead, please visit the website.");
"visit the respective repositories. If you want to know about the Core Team instead, please visit the website.");
disclaimerLabel.getStyleClass().add("about_license_contributors_disclaimer_label");
disclaimerLabel.getStyleClass().add("about_license_contributors_disclaimer_label");
disclaimerLabel.setWrapText(true);
disclaimerLabel.setWrapText(true);
Label buildDateLabel = new Label();
Label buildDateLabel = new Label();
buildDateLabel.getStyleClass().add("build-date-label");
buildDateLabel.getStyleClass().add("build-date-label");
mainVBox.getChildren().addAll(appIconImageView, tabPane, disclaimerLabel,
mainVBox.getChildren().addAll(appIconImageView, tabPane, disclaimerLabel,
donateButton, hBox1, buildDateLabel);
donateButton, hBox1, hBox2, buildDateLabel);
mainVBox.prefWidthProperty().bind(widthProperty().subtract(25));
mainVBox.prefWidthProperty().bind(widthProperty().subtract(25));
setContent(mainVBox);
setContent(mainVBox);
try
try
{
{
buildDateLabel.setText("Build date/time: " + new String(Objects.requireNonNull(Main.class.getResourceAsStream("build-date")).readAllBytes()));
buildDateLabel.setText("Build date/time: " + new String(Objects.requireNonNull(Main.class.getResourceAsStream("build-date")).readAllBytes()));
}
}
catch (Exception e)
catch (Exception e)
{
{
e.printStackTrace();
e.printStackTrace();
}
}
setCache(true);
setCache(true);
setCacheHint(CacheHint.SPEED);
setCacheHint(CacheHint.SPEED);
}
}
private Label getSep()
{
Label label = new Label("|");
label.getStyleClass().add("separator_ui_label");
return label;
}
public void openWebpage(String url)
public void openWebpage(String url)
{
{
clientListener.openURL(url);
clientListener.openURL(url);
}
}
}
}
.root {
.root {
-fx-font-family : 'Roboto';
-fx-font-family : 'Roboto';
}
}
.action_box
.action_box
{
{
-fx-border-width: 1px;
-fx-border-width: 1px;
-fx-border-color : grey;
-fx-border-color : grey;
}
}
.action_box_icon_present
.action_box_icon_present
{
{
}
}
.action_box_icon_not_present
.action_box_icon_not_present
{
{
}
}
.action_box_onclick
.action_box_onclick
{
{
}
}
.settings_heading_label
.settings_heading_label
{
{
-fx-font-size: 20;
-fx-font-size: 20;
}
}
.alert_header
.alert_header
{
{
-fx-padding: 5;
-fx-padding: 5;
}
}
.alert_pane
.alert_pane
{
{
-fx-border-width : 5;
-fx-border-width : 5;
-fx-border-radius : 5;
-fx-border-radius : 5;
-fx-background-radius : 5;
-fx-background-radius : 5;
-fx-max-width : 400;
-fx-max-width : 400;
-fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.6) , 5, 0.0 , 0.0 , 0 );
-fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.6) , 5, 0.0 , 0.0 , 0 );
}
}
.alert_header_icon
.alert_header_icon
{
{
-fx-icon-size : 30;
-fx-icon-size : 30;
}
}
.alert_content_pane
.alert_content_pane
{
{
-fx-padding: 5;
-fx-padding: 5;
}
}
.alert_pane_parent, .combobox_pane_parent
.alert_pane_parent, .combobox_pane_parent
{
{
-fx-background-color : rgba(0,0,0,0.5);
-fx-background-color : rgba(0,0,0,0.5);
}
}
.alert_pane_header_text
.alert_pane_header_text
{
{
-fx-font-size: 18;
-fx-font-size: 18;
}
}
.alert_button_bar
.alert_button_bar
{
{
-fx-alignment: CENTER_RIGHT;
-fx-alignment: CENTER_RIGHT;
-fx-spacing: 5;
-fx-spacing: 5;
-fx-padding: 5;
-fx-padding: 5;
}
}
.alert_scroll_pane {
.alert_scroll_pane {
-fx-max-height : 300;
-fx-max-height : 300;
/*-fx-focus-color: #FFFFFF;
/*-fx-focus-color: #FFFFFF;
-fx-faint-focus-color:#FFFFFF;*/
-fx-faint-focus-color:#FFFFFF;*/
}
}
.combo_box
.combo_box
{
{
-fx-alignment:CENTER_LEFT;
-fx-alignment:CENTER_LEFT;
-fx-pref-width:200;
-fx-pref-width:200;
-fx-padding: 5;
-fx-padding: 5;
-fx-border-width : 1;
-fx-border-width : 1;
-fx-border-color : grey;
-fx-border-color : grey;
-fx-border-radius : 3;
-fx-border-radius : 3;
}
}
.combo_box_popup
.combo_box_popup
{
{
-fx-border-width : 5;
-fx-border-width : 5;
-fx-border-radius : 5;
-fx-border-radius : 5;
-fx-background-radius : 5;
-fx-background-radius : 5;
-fx-max-height : 300;
-fx-max-height : 300;
-fx-max-width : 410;
-fx-max-width : 410;
-fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.6) , 5, 0.0 , 0.0 , 0 );
-fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.6) , 5, 0.0 , 0.0 , 0 );
}
}
.combo_box_popup_vbox
.combo_box_popup_vbox
{
{
-fx-padding: 5 5 0 5;
-fx-padding: 5 5 0 5;
-fx-spacing:5;
-fx-spacing:5;
}
}
.combo_box_drop_down_icon
.combo_box_drop_down_icon
{
{
-fx-icon-code: fas-caret-down;
-fx-icon-code: fas-caret-down;
-fx-icon-size: 14;
-fx-icon-size: 14;
}
}
.action_grid_pane_parent
.action_grid_pane_parent
{
{
-fx-background-color:transparent;
-fx-background-color:transparent;
}
}
.first_time_use_pane_heading_label
.first_time_use_pane_heading_label
{
{
-fx-font-size: 20;
-fx-font-size: 20;
}
}
.first_time_use_pane_stackpane
.first_time_use_pane_stackpane
{
{
}
}
.first_time_use_pane_welcome
.first_time_use_pane_welcome
{
{
}
}
.first_time_use_pane_license
.first_time_use_pane_license
{
{
-fx-spacing : 10;
-fx-spacing : 10;
}
}
.first_time_use_pane_final_config
.first_time_use_pane_final_config
{
{
}
}
.first_time_use_pane_final_config_label
.first_time_use_pane_final_config_label
{
{
}
}
.first_time_use_welcome_pane_welcome_label
.first_time_use_welcome_pane_welcome_label
{
{
-fx-font-size: 30;
-fx-font-size: 30;
}
}
.first_time_use_welcome_pane_next_to_continue_label
.first_time_use_welcome_pane_next_to_continue_label
{
{
-fx-font-size: 15;
-fx-font-size: 15;
}
}
.scroll-pane
.scroll-pane
{
{
-fx-focus-color:transparent;
-fx-focus-color:transparent;
-fx-faint-focus-color:transparent;
-fx-faint-focus-color:transparent;
}
}
/*Alert Classes added to default stylesheet to show init error, if occurs */
/*Alert Classes added to default stylesheet to show init error, if occurs */
.action_box_display_text_label
.action_box_display_text_label
{
{
-fx-font-size : 16;
-fx-font-size : 16;
-fx-background-color : transparent;
-fx-background-color : transparent;
}
}
.alert_pane
.alert_pane
{
{
-fx-background-color : white;
-fx-background-color : white;
-fx-border-color : white;
-fx-border-color : white;
}
}
.alert_content_pane
.alert_content_pane
{
{
-fx-background-color: white;
-fx-background-color: white;
-fx-padding: 5;
-fx-padding: 5;
}
}
.alert_scroll_pane
.alert_scroll_pane
{
{
-fx-background: white;
-fx-background: white;
-fx-border-color:white;
-fx-border-color:white;
}
}
.alert_button_bar
.alert_button_bar
{
{
-fx-background-color:white;
-fx-background-color:white;
}
}
.about_donate_hyperlink
.about_donate_hyperlink
{
{
-fx-padding : 10 0 0 0;
-fx-padding : 10 0 0 0;
-fx-font-size : 25;
-fx-font-size : 25;
}
}
.screensaver
.screensaver
{
{
-fx-background-color: black;
-fx-background-color: black;
}
.separator_ui_label
{
-fx-text-fill: grey;
}
}