#!/bin/bash set -e usage() { echo "Usage: $(basename "$0") [-h] [-a default=x64]" echo echo " Options:" echo " -a Architecture to build for ( default=x64)" echo " -h Show this help and exit" } x64=1 armv7l=0 arm64=0 #checking for arch option (if not specified set x64) and h option while getopts :a:h name; do case $name in a) case $OPTARG in x64) x64=1 ;; armv7l) armv7l=1 x64=0 ;; arm64) arm64=1 x64=0 ;; all) x64=1 armv7l=1 arm64=1 ;; *) echo "Invalid architecture specified" usage exit 1 ;; esac ;; h) usage exit 0 ;; *) usage exit 1 ;; esac done clear() { rm -rf "$TEMPDIR" } TEMPDIR="$(mktemp -d)" trap clear EXIT #loading version info with jq version=$(jq -r '.version' version_info.json) exe_name=$(jq -r '.exe_name' version_info.json) exe_link=$(jq -r '.exe_link' version_info.json) exe_sha256=$(jq -r '.exe_sha256' version_info.json) #downloading exe echo "Downloading $exe_name" curl -L -o "$TEMPDIR/$exe_name" "$exe_link" #checking sha256 echo "Checking sha256" echo "$exe_sha256 $TEMPDIR/$exe_name" | sha256sum -c echo "Repaking $exe_name" sh repack.sh -o "$TEMPDIR/app" "$TEMPDIR/$exe_name" #downloading electron binaries if [ $x64 -eq 1 ]; then echo "Downloading electron x64" curl -L -o "$TEMPDIR/electron-x64.zip" "https://github.com/electron/electron/releases/download/v27.3.0/electron-v27.3.0-linux-x64.zip" unzip -q "$TEMPDIR/electron-x64.zip" -d "$TEMPDIR/electron-x64" fi if [ $armv7l -eq 1 ]; then echo "Downloading electron armv7l" curl -L -o "$TEMPDIR/electron-armv7l.zip" "https://github.com/electron/electron/releases/download/v27.3.0/electron-v27.3.0-linux-armv7l.zip" unzip -q "$TEMPDIR/electron-armv7l.zip" -d "$TEMPDIR/electron-armv7l" fi if [ $arm64 -eq 1 ]; then echo "Downloading electron arm64" curl -L -o "$TEMPDIR/electron-arm64.zip" "https://github.com/electron/electron/releases/download/v27.3.0/electron-v27.3.0-linux-arm64.zip" unzip -q "$TEMPDIR/electron-arm64.zip" -d "$TEMPDIR/electron-arm64" fi mkdir -p "deb" #bulding packages if [ $x64 -eq 1 ]; then echo "Building x64 package" pkgdir="$TEMPDIR/yandexmusic-x64" mkdir -p "$pkgdir/DEBIAN" cp "./templates/control" "$pkgdir/DEBIAN/control" sed -i "s/%version%/$version/g" "$pkgdir/DEBIAN/control" sed -i "s/%arch%/amd64/g" "$pkgdir/DEBIAN/control" mkdir -p "$pkgdir/usr/lib/yandexmusic" mkdir -p "$pkgdir/usr/share/applications" mkdir -p "$pkgdir/usr/share/licenses/yandexmusic" mkdir -p "$pkgdir/usr/share/pixmaps" mkdir -p "$pkgdir/usr/bin" install -Dm644 "$TEMPDIR/app/yandexmusic.asar" "$pkgdir/usr/lib/yandexmusic/yandexmusic.asar" install -Dm644 "$TEMPDIR/app/favicon.png" "$pkgdir/usr/share/pixmaps/yandexmusic.png" install -Dm644 "./templates/desktop" "$pkgdir/usr/share/applications/yandexmusic.desktop" install -Dm644 "./LICENSE.md" "$pkgdir/usr/share/licenses/yandexmusic/LICENSE" mv "$TEMPDIR/electron-x64/" "$pkgdir/usr/lib/yandexmusic/electron" echo "#!/bin/sh" > "$pkgdir/usr/bin/yandexmusic" echo 'exec /usr/lib/yandexmusic/electron/electron /usr/lib/yandexmusic/yandexmusic.asar "$@"' >> "$pkgdir/usr/bin/yandexmusic" chmod 755 "$pkgdir/usr/bin/yandexmusic" dpkg-deb --build "$pkgdir" "deb/yandexmusic_${version}_amd64.deb" fi if [ $armv7l -eq 1 ]; then echo "Building armv7l package" pkgdir="$TEMPDIR/yandexmusic-armv7l" mkdir -p "$pkgdir/DEBIAN" cp "./templates/control" "$pkgdir/DEBIAN/control" sed -i "s/%version%/$version/g" "$pkgdir/DEBIAN/control" sed -i "s/%arch%/armhf/g" "$pkgdir/DEBIAN/control" mkdir -p "$pkgdir/usr/lib/yandexmusic" mkdir -p "$pkgdir/usr/share/applications" mkdir -p "$pkgdir/usr/share/licenses/yandexmusic" mkdir -p "$pkgdir/usr/share/pixmaps" mkdir -p "$pkgdir/usr/bin" install -Dm644 "$TEMPDIR/app/yandexmusic.asar" "$pkgdir/usr/lib/yandexmusic/yandexmusic.asar" install -Dm644 "$TEMPDIR/app/favicon.png" "$pkgdir/usr/share/pixmaps/yandexmusic.png" install -Dm644 "./templates/desktop" "$pkgdir/usr/share/applications/yandexmusic.desktop" install -Dm644 "./LICENSE.md" "$pkgdir/usr/share/licenses/yandexmusic/LICENSE" mv "$TEMPDIR/electron-armv7l/" "$pkgdir/usr/lib/yandexmusic/electron" echo "#!/bin/sh" > "$pkgdir/usr/bin/yandexmusic" echo 'exec /usr/lib/yandexmusic/electron/electron /usr/lib/yandexmusic/yandexmusic.asar "$@"' >> "$pkgdir/usr/bin/yandexmusic" chmod 755 "$pkgdir/usr/bin/yandexmusic" dpkg-deb --build "$pkgdir" "deb/yandexmusic_${version}_armhf.deb" fi if [ $arm64 -eq 1 ]; then echo "Building arm64 package" pkgdir="$TEMPDIR/yandexmusic-arm64" mkdir -p "$pkgdir/DEBIAN" cp "./templates/control" "$pkgdir/DEBIAN/control" sed -i "s/%version%/$version/g" "$pkgdir/DEBIAN/control" sed -i "s/%arch%/arm64/g" "$pkgdir/DEBIAN/control" mkdir -p "$pkgdir/usr/lib/yandexmusic" mkdir -p "$pkgdir/usr/share/applications" mkdir -p "$pkgdir/usr/share/licenses/yandexmusic" mkdir -p "$pkgdir/usr/share/pixmaps" mkdir -p "$pkgdir/usr/bin" install -Dm644 "$TEMPDIR/app/yandexmusic.asar" "$pkgdir/usr/lib/yandexmusic/yandexmusic.asar" install -Dm644 "$TEMPDIR/app/favicon.png" "$pkgdir/usr/share/pixmaps/yandexmusic.png" install -Dm644 "./templates/desktop" "$pkgdir/usr/share/applications/yandexmusic.desktop" install -Dm644 "./LICENSE.md" "$pkgdir/usr/share/licenses/yandexmusic/LICENSE" mv "$TEMPDIR/electron-arm64/" "$pkgdir/usr/lib/yandexmusic/electron" echo "#!/bin/sh" > "$pkgdir/usr/bin/yandexmusic" echo 'exec /usr/lib/yandexmusic/electron/electron /usr/lib/yandexmusic/yandexmusic.asar "$@"' >> "$pkgdir/usr/bin/yandexmusic" chmod 755 "$pkgdir/usr/bin/yandexmusic" dpkg-deb --build "$pkgdir" "deb/yandexmusic_${version}_arm64.deb" fi