RetroDECK/global.sh
2022-11-18 15:10:17 -05:00

102 lines
4.1 KiB
Bash
Executable file

#!/bin/bash
# This file is containing some global function needed for the script such as the config file tools
source /app/libexec/functions.sh
# Static variables
rd_conf="/var/config/retrodeck/retrodeck.cfg" # RetroDECK config file path
emuconfigs="/app/retrodeck/emu-configs" # folder with all the default emulator configs
lockfile="/var/config/retrodeck/.lock" # where the lockfile is located
default_sd="/run/media/mmcblk0p1" # Steam Deck SD default path
hard_version="$(cat '/app/retrodeck/version')" # hardcoded version (in the readonly filesystem)
# Config files for emulators with single config files
citraconf="/var/config/citra-emu/qt-config.ini"
melondsconf="/var/config/melonDS/melonDS.ini"
rpcs3conf="/var/config/rpcs3/config.yml"
yuzuconf="/var/config/yuzu/qt-config.ini"
# ES-DE config files
es_settings="/var/config/emulationstation/.emulationstation/es_settings.xml"
# RetroArch config files
raconf="/var/config/retroarch/retroarch.cfg"
ra_core_conf="/var/config/retroarch/retroarch-core-options.cfg"
# Dolphin config files
dolphinconf="/var/config/dolphin-emu/Dolphin.ini"
dolphingcpadconf="/var/config/dolphin-emu/GCPadNew.ini"
dolphingfxconf="/var/config/dolphin-emu/GFX.ini"
dolphinhkconf="/var/config/dolphin-emu/Hotkeys.ini"
dolphinqtconf="/var/config/dolphin-emu/Qt.ini"
# PCSX2 config files
pcsx2conf="/var/config/PCSX2/inis/GS.ini"
pcsx2uiconf="/var/config/PCSX2/inis/PCSX2_ui.ini"
pcsx2vmconf="/var/config/PCSX2/inis/PCSX2_vm.ini"
# PCSX2-QT config file
pcsx2qtconf="/var/config/PCSX2/inis/PCSX2.ini"
# We moved the lockfile in /var/config/retrodeck in order to solve issue #53 - Remove in a few versions
if [ -f "$HOME/retrodeck/.lock" ]
then
mv "$HOME/retrodeck/.lock" $lockfile
fi
# If there is no config file I initalize the file with the the default values
if [ ! -f "$rd_conf" ]
then
mkdir -p /var/config/retrodeck
echo "RetroDECK config file not found in $rd_conf"
echo "Initializing"
# if we are here means that the we are in a new installation, so the version is valorized with the hardcoded one
# Initializing the variables
if [ -z $version]; then
if [[ $(cat $lockfile) == *"0.4."* ]] || [[ $(cat $lockfile) == *"0.3."* ]] || [[ $(cat $lockfile) == *"0.2."* ]] || [[ $(cat $lockfile) == *"0.1."* ]]; then # If the previous version is very out of date, pre-rd_conf
echo "Running version workaround"
version=$(cat $lockfile)
else
version="$hard_version"
fi
fi
rdhome="$HOME/retrodeck" # the retrodeck home, aka ~/retrodeck
roms_folder="$rdhome/roms" # the default roms folder path
saves_folder="$rdhome/saves" # the default saves folder path
states_folder="$rdhome/states" # the default states folder path
bios_folder="$rdhome/bios" # the default bios folder
media_folder="$rdhome/downloaded_media" # the media folder, where all the scraped data is downloaded into
themes_folder="$rdhome/themes" # the themes folder
sdcard="$default_sd" # Steam Deck SD default path
# Writing the variables for the first time
echo '#!/bin/bash' >> $rd_conf
echo "version=$version" >> $rd_conf
echo "rdhome=$rdhome" >> $rd_conf
echo "roms_folder=$roms_folder" >> $rd_conf
echo "saves_folder=$saves_folder" >> $rd_conf
echo "states_folder=$states_folder" >> $rd_conf
echo "bios_folder=$bios_folder" >> $rd_conf
echo "media_folder=$media_folder" >> $rd_conf
echo "themes_folder=$themes_folder" >> $rd_conf
echo "sdcard=$sdcard" >> $rd_conf
echo "Setting config file permissions"
chmod +rw $rd_conf
# If the config file is existing i just read the variables (source it)
else
echo "Found RetroDECK config file in $rd_conf"
echo "Loading it"
source "$rd_conf"
fi