510 lines
17 KiB
Bash
510 lines
17 KiB
Bash
|
#!/bin/bash
|
||
|
#
|
||
|
# PortMaster
|
||
|
# https://github.com/christianhaitian/arkos/wiki/PortMaster
|
||
|
# Description : A simple tool that allows you to download
|
||
|
# various game ports that are available for RK3326 devices
|
||
|
# using 351Elec, ArkOS, EmuElec, RetroOZ, and TheRA.
|
||
|
#
|
||
|
|
||
|
if [ -f "/etc/profile" ]; then
|
||
|
source /etc/profile
|
||
|
fi
|
||
|
|
||
|
ESUDO="sudo"
|
||
|
GREP="grep"
|
||
|
WGET="wget"
|
||
|
export DIALOGRC=/
|
||
|
app_colorscheme="Default"
|
||
|
mono_version="mono-6.12.0.122-aarch64.squashfs"
|
||
|
|
||
|
sudo echo "Testing for sudo..."
|
||
|
if [ $? != 0 ]; then
|
||
|
ESUDO=""
|
||
|
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/storage/roms/ports/PortMaster/libs"
|
||
|
GREP="/storage/roms/ports/PortMaster/grep"
|
||
|
#WGET="/storage/roms/ports/PortMaster/wget"
|
||
|
LANG=""
|
||
|
else
|
||
|
dpkg -s "curl" &>/dev/null
|
||
|
if [ "$?" != "0" ]; then
|
||
|
$ESUDO apt update && $ESUDO apt install -y curl --no-install-recommends
|
||
|
fi
|
||
|
|
||
|
dpkg -s "dialog" &>/dev/null
|
||
|
if [ "$?" != "0" ]; then
|
||
|
$ESUDO apt update && $ESUDO apt install -y dialog --no-install-recommends
|
||
|
fi
|
||
|
|
||
|
isitarkos=$($GREP "title=" /usr/share/plymouth/themes/text.plymouth)
|
||
|
if [[ $isitarkos == *"ArkOS"* ]]; then
|
||
|
if [[ ! -z $( timedatectl | grep inactive ) ]]; then
|
||
|
$ESUDO timedatectl set-ntp 1
|
||
|
fi
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
if [ -f "/etc/os-release" ]; then
|
||
|
source /etc/os-release
|
||
|
fi
|
||
|
|
||
|
$ESUDO chmod 666 /dev/tty0
|
||
|
export TERM=linux
|
||
|
export XDG_RUNTIME_DIR=/run/user/$UID/
|
||
|
printf "\033c" > /dev/tty0
|
||
|
# hide cursor
|
||
|
printf "\e[?25h" > /dev/tty0
|
||
|
dialog --clear
|
||
|
|
||
|
hotkey="Select"
|
||
|
height="15"
|
||
|
width="55"
|
||
|
power="None"
|
||
|
opengl="None"
|
||
|
|
||
|
if [[ -e "/dev/input/by-path/platform-ff300000.usb-usb-0:1.2:1.0-event-joystick" ]]; then
|
||
|
param_device="anbernic"
|
||
|
if [ -f "/boot/rk3326-rg351v-linux.dtb" ] || [ $(cat "/storage/.config/.OS_ARCH") == "RG351V" ]; then
|
||
|
$ESUDO setfont /usr/share/consolefonts/Lat7-Terminus20x10.psf.gz
|
||
|
height="20"
|
||
|
width="60"
|
||
|
fi
|
||
|
elif [[ -e "/dev/input/by-path/platform-odroidgo2-joypad-event-joystick" ]]; then
|
||
|
if [[ ! -z $(cat /etc/emulationstation/es_input.cfg | $GREP "190000004b4800000010000001010000") ]]; then
|
||
|
param_device="oga"
|
||
|
hotkey="Minus"
|
||
|
else
|
||
|
param_device="rk2020"
|
||
|
fi
|
||
|
elif [[ -e "/dev/input/by-path/platform-odroidgo3-joypad-event-joystick" ]]; then
|
||
|
param_device="ogs"
|
||
|
if [[ -e "/opt/.retrooz/device" ]]; then
|
||
|
param_device="$(cat /opt/.retrooz/device)"
|
||
|
if [[ "$param_device" == *"rgb10max2native"* ]]; then
|
||
|
param_device="rgb10maxnative"
|
||
|
elif [[ "$param_device" == *"rgb10max2top"* ]]; then
|
||
|
param_device="rgb10maxtop"
|
||
|
fi
|
||
|
fi
|
||
|
$ESUDO setfont /usr/share/consolefonts/Lat7-Terminus20x10.psf.gz
|
||
|
height="20"
|
||
|
width="60"
|
||
|
if [ $(cat "/storage/.config/.OS_ARCH") == "RG552" ]; then
|
||
|
power='(?<=Title_P=\").*?(?=\")'
|
||
|
fi
|
||
|
elif [[ -e "/dev/input/by-path/platform-singleadc-joypad-event-joystick" ]]; then
|
||
|
param_device="rg552"
|
||
|
$ESUDO setfont /usr/share/consolefonts/Lat7-Terminus20x10.psf.gz
|
||
|
height="20"
|
||
|
width="60"
|
||
|
power='(?<=Title_P=\").*?(?=\")'
|
||
|
hotkey="L3"
|
||
|
else
|
||
|
param_device="chi"
|
||
|
hotkey="1"
|
||
|
$ESUDO setfont /usr/share/consolefonts/Lat7-Terminus20x10.psf.gz
|
||
|
height="20"
|
||
|
width="60"
|
||
|
fi
|
||
|
|
||
|
if [[ "${UI_SERVICE}" =~ weston.service ]]; then
|
||
|
opengl='(?<=Title_F=\").*?(?=\")'
|
||
|
fi
|
||
|
|
||
|
if [[ -e "/storage/.config/.OS_ARCH" ]] || [ "${OS_NAME}" == "JELOS" ] || [ "${OS_NAME}" == "UnofficialOS" ]; then
|
||
|
toolsfolderloc="/storage/roms/ports"
|
||
|
else
|
||
|
isitthera=$($GREP "title=" "/usr/share/plymouth/themes/text.plymouth")
|
||
|
if [[ $isitthera == *"TheRA"* ]]; then
|
||
|
if [ -d "/opt/tools/PortMaster/" ]; then
|
||
|
toolsfolderloc="/opt/tools"
|
||
|
else
|
||
|
toolsfolderloc="/roms/ports"
|
||
|
fi
|
||
|
else
|
||
|
if [ -d "/opt/system/Tools/PortMaster/" ]; then
|
||
|
toolsfolderloc="/opt/system/Tools"
|
||
|
else
|
||
|
toolsfolderloc="/roms/ports"
|
||
|
fi
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
isitext=$(df -PTh $toolsfolderloc | awk '{print $2}' | grep ext)
|
||
|
|
||
|
cd $toolsfolderloc/PortMaster
|
||
|
|
||
|
$ESUDO $toolsfolderloc/PortMaster/oga_controls PortMaster.sh $param_device > /dev/null 2>&1 &
|
||
|
|
||
|
curversion="$(curl file://$toolsfolderloc/PortMaster/version)"
|
||
|
|
||
|
GW=`ip route | awk '/default/ { print $3 }'`
|
||
|
if [ -z "$GW" ]; then
|
||
|
dialog --clear --backtitle "PortMaster v$curversion" --title "$1" --clear \
|
||
|
--msgbox "\n\nYour network connection doesn't seem to be working. \
|
||
|
\nDid you make sure to configure your wifi connection?" $height $width 2>&1 > /dev/tty0
|
||
|
$ESUDO kill -9 $(pidof oga_controls)
|
||
|
if [ ! -z "$ESUDO" ]; then
|
||
|
$ESUDO systemctl restart oga_events &
|
||
|
fi
|
||
|
exit 0
|
||
|
fi
|
||
|
|
||
|
website="https://github.com/PortsMaster/PortMaster-Releases/releases/latest/download/"
|
||
|
isgithubrelease="true" #Github releases convert space " " ("%20") to "."
|
||
|
|
||
|
ISITCHINA=$(curl -s --connect-timeout 30 -m 60 http://demo.ip-api.com/json | $GREP -Po '"country":.*?[^\\]"')
|
||
|
|
||
|
#if [[ "$ISITCHINA" == "\"country\":\"China\"" ]]; then
|
||
|
# website="http://139.196.213.206/arkos/ports/"
|
||
|
# isgithubrelease="false"
|
||
|
#fi
|
||
|
|
||
|
if [ ! -d "/dev/shm/portmaster" ]; then
|
||
|
mkdir /dev/shm/portmaster
|
||
|
fi
|
||
|
|
||
|
UpdateCheck() {
|
||
|
|
||
|
gitversion=$(curl -L -s --connect-timeout 30 -m 60 ${website}version)
|
||
|
|
||
|
if [[ "$gitversion" != "$curversion" ]]; then
|
||
|
|
||
|
dialog --clear --backtitle "PortMaster v$curversion" --title "$1" --clear \
|
||
|
--yesno "\nThere's an update for PortMaster ($gitversion). Would you like to download it now?" $height $width 2>&1 > /dev/tty0
|
||
|
|
||
|
case $? in
|
||
|
0)
|
||
|
$WGET -t 3 -T 60 -q --show-progress "${website}PortMaster.zip" -O /dev/shm/portmaster/PortMaster.zip 2>&1 | stdbuf -oL sed -E 's/\.\.+/---/g'| dialog \
|
||
|
--progressbox "Downloading and installing PortMaster update..." $height $width > /dev/tty0
|
||
|
if [ ${PIPESTATUS[0]} -eq 0 ]; then
|
||
|
if [[ ! -z $(cat $toolsfolderloc/PortMaster/gamecontrollerdb.txt | $GREP 'Xbox 360 Layout') ]]; then
|
||
|
local x360="Yes"
|
||
|
fi
|
||
|
unzip -X -o /dev/shm/portmaster/PortMaster.zip -d $toolsfolderloc/
|
||
|
if [ "${OS_NAME}" != "JELOS" ] && [ "${OS_NAME}" != "UnofficialOS" ]; then
|
||
|
mv -f $toolsfolderloc/PortMaster/PortMaster.sh $toolsfolderloc/.
|
||
|
if [ -f "$toolsfolderloc/PortMaster/tasksetter.sh" ]; then
|
||
|
rm -f "$toolsfolderloc/PortMaster/tasksetter.sh"
|
||
|
fi
|
||
|
fi
|
||
|
if [[ "${x360}" == "Yes" ]]; then
|
||
|
cp -f $toolsfolderloc/PortMaster/.Backup/donottouch_x.txt $toolsfolderloc/PortMaster/gamecontrollerdb.txt
|
||
|
fi
|
||
|
if [ ! -z $isitext ]; then
|
||
|
$ESUDO chmod -R 777 $toolsfolderloc/PortMaster
|
||
|
$ESUDO chmod 777 $toolsfolderloc/PortMaster.sh
|
||
|
fi
|
||
|
dialog --clear --backtitle "PortMaster v$curversion" --title "$1" --clear --msgbox "\n\nPortMaster updated successfully." $height $width 2>&1 > /dev/tty0
|
||
|
$ESUDO kill -9 $(pidof oga_controls)
|
||
|
$ESUDO rm -f /dev/shm/portmaster/PortMaster.zip
|
||
|
if [ ! -z "$ESUDO" ]; then
|
||
|
$ESUDO systemctl restart oga_events &
|
||
|
fi
|
||
|
exit 0
|
||
|
else
|
||
|
dialog --clear --backtitle "PortMaster v$curversion" --title "$1" --clear --msgbox "\n\nPortMaster failed to update." $height $width 2>&1 > /dev/tty0
|
||
|
$ESUDO rm -f /dev/shm/portmaster/PortMaster.zip
|
||
|
fi
|
||
|
;;
|
||
|
esac
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
$WGET -t 3 -T 60 --no-check-certificate "$website"ports.md -O /dev/shm/portmaster/ports.md
|
||
|
|
||
|
PortInfoInstall() {
|
||
|
|
||
|
local setwebsiteback="N"
|
||
|
local unzipstatus
|
||
|
|
||
|
if [ ! -z "$(cat /etc/fstab | $GREP "roms2" | tr -d '\0')" ]; then
|
||
|
whichsd="roms2"
|
||
|
elif [ -f "/storage/.config/.OS_ARCH" ] || [ "${OS_NAME}" == "JELOS" ] || [ "${OS_NAME}" == "UnofficialOS" ]; then
|
||
|
whichsd="storage/roms"
|
||
|
else
|
||
|
whichsd="roms"
|
||
|
fi
|
||
|
|
||
|
msgtxt=$(cat /dev/shm/portmaster/ports.md | $GREP "$1" | $GREP -oP '(?<=Desc=").*?(?=")')
|
||
|
installloc=$(cat /dev/shm/portmaster/ports.md | $GREP "$1" | $GREP -oP '(?<=locat=").*?(?=")')
|
||
|
porter=$(cat /dev/shm/portmaster/ports.md | $GREP "$1" | $GREP -oP '(?<=porter=").*?(?=")')
|
||
|
needmono=$(cat /dev/shm/portmaster/ports.md | $GREP "$1" | $GREP -oP '(?<=mono=").*?(?=")')
|
||
|
if [[ -f "$toolsfolderloc/PortMaster/libs/$mono_version" ]]; then
|
||
|
ismonothere="y"
|
||
|
else
|
||
|
ismonothere="n"
|
||
|
fi
|
||
|
|
||
|
if [[ "$isgithubrelease" == "true" ]]; then
|
||
|
#Github releases convert space " " ("%20") to "."
|
||
|
# Examples:
|
||
|
# - "Bermuda%20Syndrome" -> "Bermuda.Syndrome"
|
||
|
# - "Bermuda Syndrome" -> "Bermuda.Syndrome"
|
||
|
# - "Mr. Boom" -> "Mr.Boom" (note how space is removed)
|
||
|
installloc="$( echo "$installloc" | sed 's/%20/./g' | sed 's/ /./g' | sed 's/\.\././g' )"
|
||
|
fi
|
||
|
|
||
|
if [[ "${needmono,,}" == "y" ]] && [[ "$ismonothere" == "n" ]]; then
|
||
|
dialog --clear --backtitle "PortMaster v$curversion" --title "$1" --clear \
|
||
|
--yesno "\n$msgtxt \n\nPorted By: $porter\n\nThis port also requires the download and install
|
||
|
of the mono library which is over 200MBs in size. This download may take a while.
|
||
|
\n\nWould you like to continue to install this port?" $height $width 2>&1 > /dev/tty0
|
||
|
else
|
||
|
dialog --clear --backtitle "PortMaster v$curversion" --title "$1" --clear \
|
||
|
--yesno "\n$msgtxt \n\nPorted By: $porter\n\nWould you like to continue to install this port?" $height $width 2>&1 > /dev/tty0
|
||
|
fi
|
||
|
|
||
|
case $? in
|
||
|
0)
|
||
|
if [ ${needmono,,} == "y" ] && [ $ismonothere == "n" ]; then
|
||
|
$WGET -t 3 -T 60 -q --show-progress "$website$mono_version" -O \
|
||
|
$toolsfolderloc/PortMaster/libs/$mono_version 2>&1 | stdbuf -oL sed -E 's/\.\.+/---/g'| dialog --progressbox \
|
||
|
"Downloading ${mono_version} package..." $height $width > /dev/tty0
|
||
|
fi
|
||
|
if [ ${needmono,,} == "y" ] && [ $ismonothere == "n" ] && [ $? -ne 0 ]; then
|
||
|
dialog --clear --backtitle "PortMaster v$curversion" --title "$mono_version" --clear --msgbox "\n\n$mono_version did NOT download. \
|
||
|
\n\nIt did not download correctly. Please verify that you have at least 500MBs of space left in your roms parition
|
||
|
and your internet connection is stable and try again." $height $width 2>&1 > /dev/tty0
|
||
|
$ESUDO rm -f $toolsfolderloc/PortMaster/libs/$mono_version
|
||
|
else
|
||
|
$WGET -t 3 -T 60 -q --show-progress "$website$installloc" -O \
|
||
|
/dev/shm/portmaster/$installloc 2>&1 | stdbuf -oL sed -E 's/\.\.+/---/g'| dialog --progressbox \
|
||
|
"Downloading ${1} package..." $height $width > /dev/tty0
|
||
|
unzip -o /dev/shm/portmaster/$installloc -d /$whichsd/ports/ > /dev/tty0
|
||
|
unzipstatus=$?
|
||
|
if [ $unzipstatus -eq 0 ] || [ $unzipstatus -eq 1 ]; then
|
||
|
if [ ! -z $isitext ]; then
|
||
|
$ESUDO chmod -R 777 /$whichsd/ports
|
||
|
fi
|
||
|
if [[ -e "/storage/.config/.OS_ARCH" ]] || [ "${OS_NAME}" == "JELOS" ] || [ "${OS_NAME}" == "UnofficialOS" ]; then
|
||
|
cd /$whichsd/ports/
|
||
|
for s in *.sh
|
||
|
do
|
||
|
if [[ -z $(cat "$s" | $GREP "ESUDO") ]] || [[ -z $(cat "$s" | $GREP "controlfolder") ]]; then
|
||
|
sed -i 's/sudo //g' /storage/roms/ports/"$s"
|
||
|
fi
|
||
|
done
|
||
|
fi
|
||
|
cd $toolsfolderloc
|
||
|
dialog --clear --backtitle "PortMaster v$curversion" --title "$1" --clear --msgbox "\n\n$1 installed successfully. \
|
||
|
\n\nMake sure to restart EmulationStation in order to see it in the ports menu." $height $width 2>&1 > /dev/tty0
|
||
|
elif [ $unzipstatus -eq 2 ] || [ $unzipstatus -eq 3 ] || [ $unzipstatus -eq 9 ] || [ $unzipstatus -eq 51 ]; then
|
||
|
dialog --clear --backtitle "PortMaster v$curversion" --title "$1" --clear --msgbox "\n\n$1 did NOT install. \
|
||
|
\n\nIt did not download correctly. Please check your internet connection and try again." $height $width 2>&1 > /dev/tty0
|
||
|
elif [ $unzipstatus -eq 50 ]; then
|
||
|
dialog --clear --backtitle "PortMaster v$curversion" --title "$1" --clear --msgbox "\n\n$1 did NOT install. \
|
||
|
\n\nYour roms partition seems to be full." $height $width 2>&1 > /dev/tty0
|
||
|
else
|
||
|
dialog --clear --backtitle "PortMaster v$curversion" --title "$1" --clear --msgbox "\n\n$1 did NOT install. \
|
||
|
\n\nUnzip error code:$unzipstatus " $height $width 2>&1 > /dev/tty0
|
||
|
fi
|
||
|
|
||
|
$ESUDO rm -f /dev/shm/portmaster/$installloc
|
||
|
fi
|
||
|
;;
|
||
|
*)
|
||
|
;;
|
||
|
esac
|
||
|
}
|
||
|
|
||
|
userExit() {
|
||
|
rm -f /dev/shm/portmaster/ports.md
|
||
|
$ESUDO kill -9 $(pidof oga_controls)
|
||
|
if [ ! -z "$ESUDO" ]; then
|
||
|
$ESUDO systemctl restart oga_events &
|
||
|
fi
|
||
|
dialog --clear
|
||
|
printf "\033c" > /dev/tty0
|
||
|
exit 0
|
||
|
}
|
||
|
SetColorScheme() {
|
||
|
if [ "$app_colorscheme" == "Default" ]; then
|
||
|
export DIALOGRC=$toolsfolderloc/PortMaster/colorscheme/$app_colorscheme.dialogrc
|
||
|
if [[ -e "$toolsfolderloc/PortMaster/PortMaster.sh" ]]; then
|
||
|
sed -i "/export DIALOGRC\=\//c\export DIALOGRC\=\/" $toolsfolderloc/PortMaster/PortMaster.sh
|
||
|
fi
|
||
|
if [[ -e "$toolsfolderloc/PortMaster.sh" ]]; then
|
||
|
sed -i "/export DIALOGRC\=\//c\export DIALOGRC\=\/" $toolsfolderloc/PortMaster.sh
|
||
|
fi
|
||
|
else
|
||
|
export DIALOGRC=$toolsfolderloc/PortMaster/colorscheme/$app_colorscheme.dialogrc
|
||
|
if [[ -e "$toolsfolderloc/PortMaster/PortMaster.sh" ]]; then
|
||
|
sed -i "/export DIALOGRC\=\//c\export DIALOGRC\=$toolsfolderloc\/PortMaster\/colorscheme\/$app_colorscheme.dialogrc" $toolsfolderloc/PortMaster/PortMaster.sh
|
||
|
fi
|
||
|
if [[ -e "$toolsfolderloc/PortMaster.sh" ]]; then
|
||
|
sed -i "/export DIALOGRC\=\//c\export DIALOGRC\=$toolsfolderloc\/PortMaster\/colorscheme\/$app_colorscheme.dialogrc" $toolsfolderloc/PortMaster.sh
|
||
|
fi
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
ColorSchemeMenu() {
|
||
|
local cmd
|
||
|
local options
|
||
|
local choice
|
||
|
local retval
|
||
|
local dialog_config
|
||
|
local temp
|
||
|
|
||
|
dialog_config=(${toolsfolderloc}/PortMaster/colorscheme/*.dialogrc) # This creates an array of the full paths to all .dialogrc files
|
||
|
dialog_config=("${dialog_config[@]##*/}") #Remove path prefix
|
||
|
dialog_config=("${dialog_config[@]%.*}") #Get filename without extension
|
||
|
cmd=(dialog \
|
||
|
--clear \
|
||
|
--backtitle "PortMaster v$curversion" \
|
||
|
--title " [ Color Scheme Selection ] " \
|
||
|
--no-collapse \
|
||
|
--cancel-label "Back" \
|
||
|
--menu "Select the PortMaster UI color scheme :" $height $width "15")
|
||
|
|
||
|
options+=(Default ".")
|
||
|
|
||
|
for temp in "${dialog_config[@]}"; do
|
||
|
if [ "$temp" == "Default" ]; then
|
||
|
echo "Skip default"
|
||
|
else
|
||
|
options+=($temp ".")
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
choice=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty0)
|
||
|
retval=$?
|
||
|
|
||
|
case $retval in
|
||
|
0)
|
||
|
if [ "$choice" != "$app_colorscheme" ]; then
|
||
|
app_colorscheme=$choice
|
||
|
SetColorScheme
|
||
|
fi
|
||
|
ColorSchemeMenu
|
||
|
;;
|
||
|
1)
|
||
|
Settings
|
||
|
;;
|
||
|
*)
|
||
|
Settings
|
||
|
;;
|
||
|
esac
|
||
|
}
|
||
|
|
||
|
Settings() {
|
||
|
if [[ ! -z $(cat $toolsfolderloc/PortMaster/gamecontrollerdb.txt | $GREP 'Default Layout') ]]; then
|
||
|
local curctrlcfg="Switch to Xbox 360 Control Layout"
|
||
|
else
|
||
|
local curctrlcfg="Switch to Default Control Layout"
|
||
|
fi
|
||
|
|
||
|
local settingsoptions=( 1 "Restore Backup gamecontrollerdb.txt" 2 "$curctrlcfg" 3 "UI Color Scheme" 4 "Go Back" )
|
||
|
|
||
|
while true; do
|
||
|
settingsselection=(dialog \
|
||
|
--backtitle "PortMaster v$curversion" \
|
||
|
--title "[ Settings Menu ]" \
|
||
|
--no-collapse \
|
||
|
--clear \
|
||
|
--cancel-label "$hotkey + Start to Exit" \
|
||
|
--menu "What do you want to do?" $height $width 15)
|
||
|
|
||
|
settingschoices=$("${settingsselection[@]}" "${settingsoptions[@]}" 2>&1 > /dev/tty0) || TopLevel
|
||
|
|
||
|
for choice in $settingschoices; do
|
||
|
case $choice in
|
||
|
1) cp -f $toolsfolderloc/PortMaster/.Backup/donottouch.txt $toolsfolderloc/PortMaster/gamecontrollerdb.txt
|
||
|
if [ $? == 0 ]; then
|
||
|
dialog --clear --backtitle "PortMaster v$curversion" --title "$1" --clear --msgbox "\n\nThe default gamecontrollerdb.txt has been successfully restored." $height $width 2>&1 > /dev/tty0
|
||
|
else
|
||
|
dialog --clear --backtitle "PortMaster v$curversion" --title "$1" --clear --msgbox "\n\nThe default gamecontrollerdb.txt has failed to be restored. Is the backup portmaster subfolder or it's contents missing?" $height $width 2>&1 > /dev/tty0
|
||
|
fi
|
||
|
Settings
|
||
|
;;
|
||
|
2) if [[ $curctrlcfg == "Switch to Xbox 360 Control Layout" ]]; then
|
||
|
cp -f $toolsfolderloc/PortMaster/.Backup/donottouch_x.txt $toolsfolderloc/PortMaster/gamecontrollerdb.txt
|
||
|
else
|
||
|
cp -f $toolsfolderloc/PortMaster/.Backup/donottouch.txt $toolsfolderloc/PortMaster/gamecontrollerdb.txt
|
||
|
fi
|
||
|
Settings
|
||
|
;;
|
||
|
3) ColorSchemeMenu
|
||
|
;;
|
||
|
4) TopLevel
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
done
|
||
|
}
|
||
|
|
||
|
MainMenu() {
|
||
|
local options=(
|
||
|
$(cat /dev/shm/portmaster/ports.md | $GREP -oP "(?<=Title=\").*?(?=\")|$power|$opengl")
|
||
|
)
|
||
|
|
||
|
while true; do
|
||
|
selection=(dialog \
|
||
|
--backtitle "PortMaster v$curversion" \
|
||
|
--title "[ Main Menu of all ports]" \
|
||
|
--no-collapse \
|
||
|
--clear \
|
||
|
--cancel-label "$hotkey + Start to Exit" \
|
||
|
--menu "Available ports for install" $height $width 15)
|
||
|
|
||
|
choices=$("${selection[@]}" "${options[@]}" 2>&1 > /dev/tty0) || TopLevel
|
||
|
|
||
|
for choice in $choices; do
|
||
|
case $choice in
|
||
|
*) PortInfoInstall $choice ;;
|
||
|
esac
|
||
|
done
|
||
|
done
|
||
|
}
|
||
|
|
||
|
MainMenuRTR() {
|
||
|
local options=(
|
||
|
$(cat /dev/shm/portmaster/ports.md | $GREP 'runtype="rtr"' | $GREP -oP "(?<=Title=\").*?(?=\")|$power|$opengl")
|
||
|
)
|
||
|
|
||
|
while true; do
|
||
|
selection=(dialog \
|
||
|
--backtitle "PortMaster v$curversion" \
|
||
|
--title "[ Main Menu for Ready to Run ports ]" \
|
||
|
--no-collapse \
|
||
|
--clear \
|
||
|
--cancel-label "$hotkey + Start to Exit" \
|
||
|
--menu "Available Ready to Run ports for install" $height $width 15)
|
||
|
|
||
|
choices=$("${selection[@]}" "${options[@]}" 2>&1 > /dev/tty0) || TopLevel
|
||
|
|
||
|
for choice in $choices; do
|
||
|
case $choice in
|
||
|
*) PortInfoInstall $choice ;;
|
||
|
esac
|
||
|
done
|
||
|
done
|
||
|
}
|
||
|
|
||
|
TopLevel() {
|
||
|
local topoptions=( 1 "All Available Ports" 2 "Ready to Run Ports" 3 "Settings" )
|
||
|
|
||
|
while true; do
|
||
|
topselection=(dialog \
|
||
|
--backtitle "PortMaster v$curversion" \
|
||
|
--title "[ Top Level Menu ]" \
|
||
|
--no-collapse \
|
||
|
--clear \
|
||
|
--cancel-label "$hotkey + Start to Exit" \
|
||
|
--menu "Please make your selection" $height $width 15)
|
||
|
|
||
|
topchoices=$("${topselection[@]}" "${topoptions[@]}" 2>&1 > /dev/tty0) || userExit
|
||
|
|
||
|
for choice in $topchoices; do
|
||
|
case $choice in
|
||
|
1) MainMenu ;;
|
||
|
2) MainMenuRTR ;;
|
||
|
3) Settings ;;
|
||
|
esac
|
||
|
done
|
||
|
done
|
||
|
}
|
||
|
|
||
|
UpdateCheck
|
||
|
TopLevel
|