#!/bin/sh
# Бизнесмузыка.РФ https://бизнесмузыка.рф

ARCH=$(uname -m)
BASEDIR=$(dirname "$0")
APPURL='https://biznesmuzyka.ru/files/'
APPFILE='BiznesmuzykaLinux64.AppImage'
APPDIR="$HOME/Biznesmuzyka"
BINFILE='squashfs-root/ru.biznesmuzyka.player'
ICONFILE='squashfs-root/ru.biznesmuzyka.player.png'
DESKTOPFILE='BiznesmuzykaLinux.desktop'

case "$ARCH" in
i?86)
	APPFILE='BiznesmuzykaLinux32.AppImage'
	;;
*)
	APPFILE='BiznesmuzykaLinux64.AppImage'
	;;
esac

printSeparator() {
	echo __________________________________
	echo
}

downloadAppFile() {
	[ -z "${1}" ] && return 1
	printSeparator
	echo 'Идёт загрузка... / Download in progress...'
	rm -f "${1}~"
	if command -v curl >/dev/null 2>&1; then
        curl -fL --connect-timeout 15 --retry 3 -o "${1}~" "${APPURL}${APPFILE}"
    elif command -v wget >/dev/null 2>&1; then
		wget -O "${1}~" "${APPURL}${APPFILE}"
	fi
	[ "$?" -ne 0 ] && return 1
	mv -f "${1}~" "$1"
}

createDesktopFile() {
	printSeparator
	echo 'Создание ярлыка приложения... / Creating desktop file...'
	(
		echo '#!/usr/bin/env xdg-open'
		echo '[Desktop Entry]'
		echo 'Type=Application'
		echo 'Terminal=false'
		echo 'StartupWMClass=ru.biznesmuzyka.player'
		echo 'StartupNotify=true'
		echo 'Name=Бизнесмузыка.РФ'
		echo 'Comment=Музыка для бизнеса'
		echo 'Categories=AudioVideo;Audio;Music;'
		echo "Icon=$APPDIR/$ICONFILE"
		echo "Exec=$APPDIR/$BINFILE --no-sandbox %U"
	) >"$1" || return 1
	chmod +x "$1"
}

createLink() {
	[ ! -d "$1" ] && return 0
	printSeparator
	echo 'Добавление ярлыка приложения... / Linking desktop file... '
	ln -sf "$APPDIR/$DESKTOPFILE" "${1}/$DESKTOPFILE" || return 1
}

enableAutoStart() {
	printSeparator
	echo 'Включение автозапуска... / Enabling autostart...'
	if [ -d "$HOME/.config" ]; then
		[ ! -d "$HOME/.config/autostart" ] && mkdir "$HOME/.config/autostart"
		ln -sf "$APPDIR/$DESKTOPFILE" "$HOME/.config/autostart/$DESKTOPFILE"
	fi
}

printAndExit() {
	local EXITCODE="${2:-$?}"
	echo
	[ "$EXITCODE" -ne '0' ] && echo "[X] ${1}" || echo "[V] ${1}"
	echo
	read -p 'Нажмите Enter для выхода... / Press Enter to exit...' READ
	exit $EXITCODE
}

printSeparator
echo "Бизнесмузыка.РФ / Biznesmuzyka.Ru"
echo 'https://бизнесмузыка.рф/app'
echo
echo "Архитектура / Architecture: $ARCH"
echo "URL: ${APPURL}${APPFILE}"

[ ! -d "$APPDIR" ] && mkdir "$APPDIR"
cd "$APPDIR" || printAndExit 'Ошибка создания каталога приложения! / App directory creation error!'

if [ ! -f "${APPDIR}/${APPFILE}" ]; then
	downloadAppFile "${APPDIR}/${APPFILE}" || printAndExit 'Ошибка загрузки файла! / Download error!'
else
	echo '[i] Использование кэшированного файла / Using cached file'
fi

printSeparator
echo 'Идёт установка... / Setup in progress... '

chmod +x "${APPDIR}/${APPFILE}" || printAndExit 'Ошибка прав приложения! / App permission error!'

[ -d "$APPDIR/squashfs-root" ] && rm -rf "$APPDIR/squashfs-root"
"${APPDIR}/${APPFILE}" --appimage-extract >"$APPDIR/extract.log" || { rm -f "${APPDIR}/${APPFILE}"; printAndExit 'Ошибка извлечения приложения! / App extract error!'; }
rm -f "${APPDIR}/${APPFILE}"

(
	createDesktopFile "$APPDIR/$DESKTOPFILE" || return 1
	createLink "$HOME/Рабочий стол" || return 1
	createLink "$HOME/Desktop" || return 1
) || printAndExit 'Ошибка ярлыка приложения! / Desktop file error!'

enableAutoStart || printAndExit 'Ошибка включения автозапуска! / Autostart configuration error!'

($APPDIR/$BINFILE --no-sandbox %U &) >/dev/null 2>&1 &

printSeparator
printAndExit 'Готово! / Success!' 0
