#!/usr/bin/env bash
# Author: Mikhail Tergoev (linux-gaming.ru)
# License MIT
########################################################################
unset PW_AUTOPLAY PW_SET_LANG PW_SILENT_INSTALL
export portname="PortProton"
export port_ver=1.1
########################################################################
cd "$(dirname "$(readlink -f "$0")")"
script_path="$(pwd)"
def_path="${HOME}/${portname}"
########################################################################
if [ "$(id -u)" == "0" ] ; then
	echo "Do not run the script from the superuser!"
	zenity --error --text "Do not run ${portname} from the superuser!" &>/dev/null
	exit 1
fi

[ -z "${XDG_DATA_HOME}" ] && export XDG_DATA_HOME="$HOME/.local/share"
PP_CONFIG_FILE="${HOME}/.config/${portname}.conf"
if [ -f "${XDG_DATA_HOME}/PortWINE/PortProton/data/scripts/start.sh" ] ; then
	echo "${XDG_DATA_HOME}/PortWINE/PortProton" > "${PP_CONFIG_FILE}"
elif [ -f "${HOME}/PortWINE/PortProton/data/scripts/start.sh" ] ; then
	echo "${XDG_DATA_HOME}/PortWINE/PortProton" > "${PP_CONFIG_FILE}"
fi

if [ "$script_path" == "/usr/bin" ] && [ -f "${PP_CONFIG_FILE}" ] ; then
	export PORT_WINE_PATH="$(cat "${PP_CONFIG_FILE}" | head -n 1)"
	if [ -f "${PORT_WINE_PATH}/data/scripts/start.sh" ] ; then
		echo "${port_ver}" > "${PORT_WINE_PATH}/data/tmp/${portname}_ver"
		/usr/bin/env bash "${PORT_WINE_PATH}/data/scripts/start.sh" "$@"
		exit 0
	else
		rm -f "${PP_CONFIG_FILE}"
	fi
fi
if locale | grep "LANG=ru_RU.UTF-8" &>/dev/null
then PW_SET_LANG="Russian"
else PW_SET_LANG="English"
fi
########################################################################
export PW_SILENT_INSTALL=1
export PW_AUTOPLAY=1
export INSTALLING_PORT=1
########################################################################
if [ -z "${PW_SET_LANG}" ] ; then
	PW_SET_LANG=$(zenity --title  "Install $portname" --text "Select the installation language" --list --radiolist \
--column="Set:" --column "Language:" \
	TRUE "Russian" \
	FALSE "English")
	[ "$?" != "0" ] && exit 1
	case $PW_SET_LANG in
		"Russian")
			INFO_TEXT="Вы запустили установщик PortWINE ${portname} версии ${port_ver}. \n\nЭто не коммерческий продукт и развивается исключительно за идею и Ваши пожертвования. \nВсе права сторонего програмного обеспечения принадлежат их владельцам! \nПродолжая установку вы автоматически соглашаетесь с данными условиями." ;;
		"English")
			INFO_TEXT="You run the installer PortWINE ${portname} v. ${port_ver}. \n\nThis is not a commercial product and developed exclusively for the idea and donate. \nAll rights to third-party software belong to their respective owners! \nContinuing the installation of you agree to these terms." ;;
	esac
	zenity --info --title "INFO" --text "$INFO_TEXT" --no-wrap &>/dev/null
	[ "$?" != "0" ] && exit 1
fi
########################################################################
case $PW_SET_LANG in
	"Russian")
		inst1=$(zenity --title  "Install ${portname}" --text "Выберите путь для установки (обновления) порта,\nили оставьте его по умолчанию." --list --radiolist --width=350 --height=250 \
		--column="Выбор" --column "Путь:" \
		TRUE "${def_path}" \
		FALSE "Другой путь...")
		[ "$?" != "0" ] && exit 1
		case $inst1 in
			"${def_path}")
				D_PATH="${def_path}" ;;
			"Другой путь...")
				D_PATH="$(zenity --file-selection --directory --title="Выберите путь..." &>/dev/null)" ;;
		esac ;;
	"English")
		inst1=$(zenity --title  "Install ${portname}" --text "Select the installation path (update) port,\nor leave it in default." --list --radiolist --width=350 --height=250 \
		--column="Set..." --column "Path:" \
		TRUE "${def_path}" \
		FALSE "Other path...")
		[ "$?" != "0" ] && exit 1
		case $inst1 in
			"${def_path}")
				D_PATH="${def_path}" ;;
			"Other path...")
				D_PATH="$(zenity --file-selection --directory --title="Select the path..." &>/dev/null)" ;;
		esac ;;
esac
echo "${D_PATH}" | grep -i "${portname}" &>/dev/null || D_PATH="${D_PATH}/${portname}"
########################################################################
case $PW_SET_LANG in
	"Russian")
		progress_bar() {
		zenity --progress --title="Установка..." --text="Настройка ${portname}" --pulsate --auto-close --auto-kill --width=450 &>/dev/null
		} ;;
	"English")
		progress_bar() {
		zenity --progress --title="Install..." --text="Install ${portname}" --pulsate --auto-close --auto-kill --width=450 &>/dev/null
		} ;;
esac
########################################################################
export PORT_WINE_PATH="${D_PATH}"
echo "${PORT_WINE_PATH}" > "${PP_CONFIG_FILE}"
if [ ! -d "${PORT_WINE_PATH}" ] ; then
    mkdir -p "$PORT_WINE_PATH" || exit 1
else
	rm -fr "${PORT_WINE_PATH}/data/tmp"
	rm -f "${PORT_WINE_PATH}/data/scripts/"* &>/dev/null
fi
########################################################################
mkdir -p "${PORT_WINE_PATH}/data/tmp"
echo "${port_ver}" > "${PORT_WINE_PATH}/data/tmp/${portname}_ver"
case "${PW_SET_LANG}" in
	"Russian") echo "RUS" > "${PORT_WINE_PATH}/data/tmp/${portname}_loc" ;;
	"English") echo "ENG" > "${PORT_WINE_PATH}/data/tmp/${portname}_loc" ;;
esac
########################################################################
export PORT_WINE_TMP_PATH="${PORT_WINE_PATH}/data/tmp"
cd "${PORT_WINE_PATH}"
try_download_scripts () {
	echo "Try download scripts from gitlab.eterfund.ru..."
	if ! wget -O "${PORT_WINE_TMP_PATH}/PortWINE-master.tar.gz" -nd -c --read-timeout 300 \
		--retry-connrefused --timeout 15 --tries 3 \
		--user-agent="Mozilla/5.0 (compatible; Konqueror/2.1.1; X11)" \
		"https://gitlab.eterfund.ru/Castro-Fidel/PortWINE/-/archive/master/PortWINE-master.tar.gz"
	then
		echo -e "Error.\nTry download scripts from github.com..."
		wget -O "${PORT_WINE_TMP_PATH}/PortWINE-master.tar.gz" -nd -c --read-timeout 300 \
		--retry-connrefused --timeout 15 --tries 3 \
		--user-agent="Mozilla/5.0 (compatible; Konqueror/2.1.1; X11)" \
		"https://github.com/Castro-Fidel/PortWINE/archive/refs/heads/master.tar.gz"
		[ "$?" != "0" ] && echo "Fatal error! Exiting." && exit 1
	fi
	echo "Try unpacking scripts..."
	tar -xvzf "${PORT_WINE_TMP_PATH}/PortWINE-master.tar.gz" -C "${PORT_WINE_TMP_PATH}"
	if [ "$?" = "0" ] ; then
		[ ! -d "${PORT_WINE_PATH}/data/" ] && mkdir "${PORT_WINE_PATH}/data/"
		cp -fr "${PORT_WINE_TMP_PATH}/PortWINE-master/data_from_portwine/"* "${PORT_WINE_PATH}/data/"
		rm -f "${PORT_WINE_TMP_PATH}/PortWINE-master.tar.gz"
		rm -fr "${PORT_WINE_TMP_PATH}/PortWINE-master/"
		export scripts_current_ver=$(cat "${PORT_WINE_PATH}/data/scripts/var" | grep SCRIPTS_NEXT_VERSION | awk -F "=" '{print $2}')
		echo "${scripts_current_ver}" > "${PORT_WINE_TMP_PATH}/scripts_ver"
	else
		rm -f "${PORT_WINE_TMP_PATH}/PortWINE-master.tar.gz"
		[ "$?" != "0" ] && echo "Fatal error! Exiting." && exit 1
	fi
}
########################################################################
try_download_scripts | progress_bar
cd "${PORT_WINE_PATH}/data/scripts"
/usr/bin/env bash "${PORT_WINE_PATH}/data/scripts/setup.sh" && exit 0
################################ARCH_BIN################################