forked from CastroFidel/PortWINE
Scripts version 2252
This commit is contained in:
@ -1,168 +1,162 @@
|
||||
#!/usr/bin/env bash
|
||||
# Author: Castro-Fidel (linux-gaming.ru)
|
||||
# Author: Mikhail Tergoev (linux-gaming.ru)
|
||||
# License MIT
|
||||
########################################################################
|
||||
unset PW_AUTOPLAY PW_SET_LANG PW_SILENT_INSTALL
|
||||
export portname="PortProton"
|
||||
export port_ver=1.0
|
||||
export port_ver=1.4
|
||||
########################################################################
|
||||
export NO_AT_BRIDGE=1
|
||||
ENG_LANG="English"
|
||||
RUS_LANG="Russian"
|
||||
[ -z "${LANG}" ] && export LANG=C
|
||||
deflink="${HOME}/PortWINE/${portname}"
|
||||
[ "$(id -u)" -eq 0 ] && echo "This script should NOT be run by root!" && zenity --error --text "This script should NOT be run by root!" 2> /dev/null && exit 1
|
||||
my_dir=$(dirname "$(readlink -f "$0")")
|
||||
if [ "$my_dir" == "/usr/bin" ] ; then
|
||||
[ -z "${XDG_DATA_HOME}" ] && export XDG_DATA_HOME="$HOME/.local/share"
|
||||
if [ -f "${XDG_DATA_HOME}/PortWINE/PortProton/data/scripts/start.sh" ] ; then
|
||||
/usr/bin/env bash "${XDG_DATA_HOME}/PortWINE/PortProton/data/scripts/start.sh" "$@"
|
||||
cd "$(dirname "$(readlink -f "$0")")"
|
||||
script_path="$(pwd)"
|
||||
def_path="${HOME}/${portname}"
|
||||
########################################################################
|
||||
fatal () {
|
||||
echo -e "\n${1}\n"
|
||||
exit 1
|
||||
}
|
||||
|
||||
pw_notify_send () {
|
||||
if command -v notify-send &>/dev/null ; then
|
||||
if [[ -f "/usr/share/icons/hicolor/scalable/apps/portproton.svg" ]]
|
||||
then notify-send -u normal -a PortProton -i "/usr/share/icons/hicolor/scalable/apps/portproton.svg" $@ "${PW_NOTIFY_TEXT}"
|
||||
else notify-send -u normal -a PortProton $@ "${PW_NOTIFY_TEXT}"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
########################################################################
|
||||
if [ "$(id -u)" == "0" ] ; then
|
||||
$yad_gui --error --text "\nDo not run ${portname} from the superuser!" 2>/dev/null
|
||||
fatal "Do not run the script from the superuser!"
|
||||
fi
|
||||
########################################################################
|
||||
unset PW_USE_NS
|
||||
if command -v yad &>/dev/null
|
||||
then yad_gui="yad --window-icon=portproton.svg --borders=10 --center --text-align=center"
|
||||
else PW_USE_NS=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
|
||||
if [ ! -z "$(locale | grep "LANG=ru_RU.UTF-8")" ] ; then
|
||||
PW_SET_LANG=$RUS_LANG
|
||||
else
|
||||
PW_SET_LANG=$ENG_LANG
|
||||
fi
|
||||
export PW_SILENT_INSTALL="1"
|
||||
export PW_AUTOPLAY=1
|
||||
deflink="${XDG_DATA_HOME}/PortWINE/${portname}"
|
||||
rm -f "${PP_CONFIG_FILE}"
|
||||
fi
|
||||
fi
|
||||
if locale | grep "LANG=ru_RU.UTF-8" 2>/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
|
||||
export PROGS_INST=""
|
||||
export vexit=0
|
||||
########################################################################
|
||||
for PROGS in "wget" "curl" "tar" "awk" "zenity" "cabextract" "pidof" ; do
|
||||
if [ ! -x "$(command -v "${PROGS}" 2>/dev/null)" ] ; then
|
||||
PROGS_INST="${PROGS_INST} ${PROGS}" && vexit=1
|
||||
fi
|
||||
done
|
||||
if [ "${vexit}" -eq "1" ] ; then
|
||||
echo "You will need to install: ${PROGS_INST}, and restart the script"
|
||||
exit 1
|
||||
fi
|
||||
########################################################################
|
||||
cd "$my_dir"
|
||||
export links
|
||||
links="$(pwd)"
|
||||
########################################################################
|
||||
if [ "$1" = "-rus" ] ; then
|
||||
PW_SET_LANG=$RUS_LANG
|
||||
export PW_SILENT_INSTALL="1"
|
||||
elif [ "$1" = "-eng" ] ; then
|
||||
PW_SET_LANG=$ENG_LANG
|
||||
export PW_SILENT_INSTALL="1"
|
||||
elif [ -z "${PW_SET_LANG}" ] ; then
|
||||
PW_SET_LANG=$(zenity --title "Install $portname" --text "Select installation language:" --list --radiolist \
|
||||
--column="" --column "Language" \
|
||||
TRUE "$RUS_LANG" \
|
||||
FALSE "$ENG_LANG" ) 2> /dev/null
|
||||
if [ $? -eq 1 ] ; then echo "Installation language not set!" && exit 1 ; fi
|
||||
if [[ "${PW_USE_NS}" != "1" ]] ; then
|
||||
case $PW_SET_LANG in
|
||||
"$RUS_LANG")
|
||||
INFO_TEXT="Вы запустили установщик ${portname} версии ${port_ver}. \n\nЭто некоммерческий продукт и развивается исключительно за идею и Ваши пожертвования. \nВсе права стороннего программного обеспечения принадлежат их владельцам! \nПродолжая установку, Вы автоматически соглашаетесь с данными условиями." > /dev/null 2>&1 ;;
|
||||
"$ENG_LANG")
|
||||
INFO_TEXT="You’ve started ${portname} installer v.${port_ver}. \n\nIt is a non-commercial product and is developed only for the idea and with the help of your donations. \nAll third-party software rights belong to their respective owners! \nIf you continue installation, you agree to these terms." > /dev/null 2>&1 ;;
|
||||
esac
|
||||
zenity --info --title "INFO" --text "$INFO_TEXT" --no-wrap 2> /dev/null
|
||||
if [ $? -eq 1 ] ; then echo "INFO message not displayed!" && exit 1 ; fi
|
||||
fi
|
||||
########################################################################
|
||||
if [ "${PW_SILENT_INSTALL}" = "1" ] ; then
|
||||
echo "${portname} is installed in ${deflink}"
|
||||
D_PATH="${deflink}"
|
||||
else
|
||||
case $PW_SET_LANG in
|
||||
"$RUS_LANG")
|
||||
inst1=$(zenity --title "Установка ${portname}" --text "Выберите путь для установки (обновления) ${portname} \nили оставьте его по умолчанию." --list --radiolist --width=350 --height=220 \
|
||||
--column="" --column "Путь:" \
|
||||
TRUE "${deflink}" \
|
||||
FALSE "Другой путь..." ) 2> /dev/null
|
||||
if [ $? -eq 1 ] ; then echo "Installation path not set!" && exit 1 ; fi
|
||||
"Russian")
|
||||
inst1=$($yad_gui --title "Install ${portname}" --text "Выберите путь для установки (обновления) ${portname},\nили оставьте его по умолчанию.\n\nВнимание:\nУстанавливать необходимо на файловую систему Linux (ext4, btrfs и прочие)." --list --radiolist --width=600 --height=200 \
|
||||
--column="Выбор" --column "Путь:" \
|
||||
TRUE "${def_path}" \
|
||||
FALSE "Другой путь...")
|
||||
[ "$?" != "0" ] && exit 1
|
||||
inst1="$(echo $inst1 | awk -F'|' '{print $2}')"
|
||||
case $inst1 in
|
||||
"${deflink}")
|
||||
D_PATH="${deflink}" ;;
|
||||
"${def_path}")
|
||||
D_PATH="${def_path}" ;;
|
||||
"Другой путь...")
|
||||
D_PATH=$(zenity --file-selection --directory --title="Выберите путь..." )
|
||||
D_PATH="${D_PATH}/${portname}" ;;
|
||||
echo 111
|
||||
D_PATH="$($yad_gui --file --directory --title="Выберите путь..." --width=800 --height=800)" ;;
|
||||
esac ;;
|
||||
"$ENG_LANG")
|
||||
inst1=$(zenity --title "Install ${portname}" --text "Choose path to install (update) ${portname} \nor leave it as default." --list --radiolist --width=350 --height=220 \
|
||||
--column="" --column "Path:" \
|
||||
TRUE "${deflink}" \
|
||||
FALSE "Other path..." ) 2> /dev/null
|
||||
if [ $? -eq 1 ] ; then echo "Installation path not set!" && exit 1; fi
|
||||
"English")
|
||||
inst1=$($yad_gui --title "Install ${portname}" --text "Select the installation path (update) port,\nor leave it in default." --list --radiolist --width=600 --height=200 \
|
||||
--column="Set..." --column "Path:" \
|
||||
TRUE "${def_path}" \
|
||||
FALSE "Other path...")
|
||||
inst1="$(echo $inst1 | awk -F'|' '{print $2}')"
|
||||
[ "$?" != "0" ] && exit 1
|
||||
case $inst1 in
|
||||
"${deflink}")
|
||||
D_PATH="${deflink}" ;;
|
||||
"${def_path}")
|
||||
D_PATH="${def_path}" ;;
|
||||
"Other path...")
|
||||
D_PATH=$(zenity --file-selection --directory --title="Choose your path..." )
|
||||
D_PATH="${D_PATH}/${portname}" ;;
|
||||
D_PATH="$($yad_gui --file --directory --title="Select the path...")" ;;
|
||||
esac ;;
|
||||
esac
|
||||
if [ $? -eq 1 ] ; then echo "error" && exit 1 ; fi
|
||||
[[ -z "${D_PATH}" ]] && fatal
|
||||
echo "${D_PATH}" | grep -i "${portname}" 2>/dev/null || D_PATH="${D_PATH}/${portname}"
|
||||
|
||||
case $PW_SET_LANG in
|
||||
"Russian")
|
||||
progress_bar() {
|
||||
$yad_gui --progress --title="Установка..." --text="Настройка ${portname}" --pulsate --auto-close --auto-kill --width=500
|
||||
} ;;
|
||||
"English")
|
||||
progress_bar() {
|
||||
$yad_gui --progress --title="Install..." --text="Install ${portname}" --pulsate --auto-close --auto-kill --width=500
|
||||
} ;;
|
||||
esac
|
||||
else
|
||||
D_PATH="${def_path}"
|
||||
PW_NOTIFY_TEXT="Installing PortProton..."
|
||||
pw_notify_send
|
||||
fi
|
||||
########################################################################
|
||||
case $PW_SET_LANG in
|
||||
"$RUS_LANG")
|
||||
progress_bar() {
|
||||
zenity --progress --title="Установка..." --text="Установка ${portname}" --pulsate --auto-close --auto-kill --width=450 > /dev/null 2>&1
|
||||
} ;;
|
||||
"$ENG_LANG")
|
||||
progress_bar() {
|
||||
zenity --progress --title="Install..." --text="Install ${portname}" --pulsate --auto-close --auto-kill --width=450 > /dev/null 2>&1
|
||||
} ;;
|
||||
esac
|
||||
########################################################################
|
||||
export PORT_WINE_PATH="${D_PATH}"
|
||||
scripts_dir="${PORT_WINE_PATH}/data/scripts"
|
||||
echo "${PORT_WINE_PATH}" > "${PP_CONFIG_FILE}"
|
||||
if [ ! -d "${PORT_WINE_PATH}" ] ; then
|
||||
mkdir -p "$PORT_WINE_PATH"
|
||||
mkdir -p "$PORT_WINE_PATH" || fatal "Cannot create a directory: $PORT_WINE_PATH"
|
||||
else
|
||||
rm -fr "${PORT_WINE_PATH}/data/tmp"
|
||||
rm -f "${scripts_dir}/"* > /dev/null 2>&1
|
||||
rm -f "${PORT_WINE_PATH}/data/scripts/"* 2>/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
|
||||
"$RUS_LANG") echo "RUS" > "${PORT_WINE_PATH}/data/tmp/${portname}_loc" ;;
|
||||
"$ENG_LANG") echo "ENG" > "${PORT_WINE_PATH}/data/tmp/${portname}_loc" ;;
|
||||
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
|
||||
########################################################################
|
||||
if [[ "${PW_USE_NS}" != "1" ]] ; then
|
||||
PW_NOTIFY_TEXT="Installing PortProton..."
|
||||
pw_notify_send
|
||||
fi
|
||||
export PORT_WINE_TMP_PATH="${PORT_WINE_PATH}/data/tmp"
|
||||
cd "${PORT_WINE_PATH}"
|
||||
try_download_scripts () {
|
||||
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"
|
||||
if [ "$?" = "0" ] ; then
|
||||
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
|
||||
scripts_current_ver=$(cat "${scripts_dir}/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"
|
||||
try_download_scripts
|
||||
fi
|
||||
else
|
||||
try_download_scripts
|
||||
fi
|
||||
}
|
||||
if [ "${PW_SILENT_INSTALL}" = "1" ] && [ ! -f "/usr/bin/portproton" ] ; then
|
||||
try_download_scripts
|
||||
else
|
||||
try_download_scripts | progress_bar
|
||||
echo -e "\nTry download scripts from gitlab.eterfund.ru..."
|
||||
if ! curl -# -A "Mozilla/5.0 (compatible; Konqueror/2.1.1; X11)" -H 'Cache-Control: no-cache, no-store' -H 'Pragma: no-cache' \
|
||||
-L "https://gitlab.eterfund.ru/Castro-Fidel/PortWINE/-/archive/master/PortWINE-master.tar.gz" \
|
||||
-o "${PORT_WINE_TMP_PATH}/PortWINE-master.tar.gz"
|
||||
then
|
||||
echo -e "\nError.\nTry download scripts from github.com..."
|
||||
curl -# -A "Mozilla/5.0 (compatible; Konqueror/2.1.1; X11)" -H 'Cache-Control: no-cache, no-store' -H 'Pragma: no-cache' \
|
||||
-L "https://github.com/Castro-Fidel/PortWINE/archive/refs/heads/master.tar.gz" \
|
||||
-o "${PORT_WINE_TMP_PATH}/PortWINE-master.tar.gz"
|
||||
[ "$?" != "0" ] && fatal "Critical error during file download!"
|
||||
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" ] && fatal "Critical error during file unpacking!"
|
||||
fi
|
||||
chmod 755 -R "${PORT_WINE_PATH}"
|
||||
########################################################################
|
||||
cd "${scripts_dir}"
|
||||
/usr/bin/env bash "${scripts_dir}/setup.sh" && exit 0
|
||||
cd "${PORT_WINE_PATH}/data/scripts"
|
||||
/usr/bin/env bash "${PORT_WINE_PATH}/data/scripts/setup.sh" && exit 0
|
||||
|
Reference in New Issue
Block a user