mirror of
https://github.com/RetroDECK/RetroDECK.git
synced 2024-11-25 15:35:38 +00:00
commit
4aba7708c5
|
@ -7,24 +7,24 @@ source automation_tools/version_extractor.sh
|
||||||
|
|
||||||
# Fetch appdata version
|
# Fetch appdata version
|
||||||
appdata_version=$(fetch_appdata_version)
|
appdata_version=$(fetch_appdata_version)
|
||||||
echo -e "Appdata:\t\t$appdata_version"
|
log i "Appdata:\t\t$appdata_version"
|
||||||
|
|
||||||
# Defining manifest file location
|
# Defining manifest file location
|
||||||
appdata_file="net.retrodeck.retrodeck.appdata.xml"
|
appdata_file="net.retrodeck.retrodeck.appdata.xml"
|
||||||
|
|
||||||
# Check if release with appdata_version already exists
|
# Check if release with appdata_version already exists
|
||||||
if grep -q "version=\"$appdata_version\"" "$appdata_file"; then
|
if grep -q "version=\"$appdata_version\"" "$appdata_file"; then
|
||||||
echo "Deleting existing release version $appdata_version..."
|
log i "Deleting existing release version $appdata_version..."
|
||||||
|
|
||||||
# Remove the existing release entry
|
# Remove the existing release entry
|
||||||
sed -i "/<release version=\"$appdata_version\"/,/<\/release>/d" "$appdata_file"
|
sed -i "/<release version=\"$appdata_version\"/,/<\/release>/d" "$appdata_file"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Adding new release version $appdata_version..."
|
log i "Adding new release version $appdata_version..."
|
||||||
|
|
||||||
# Get today's date in the required format (YYYY-MM-DD)
|
# Get today's date in the required format (YYYY-MM-DD)
|
||||||
today_date=$(date +"%Y-%m-%d")
|
today_date=$(date +"%Y-%m-%d")
|
||||||
echo "Today is $today_date"
|
log i "Today is $today_date"
|
||||||
|
|
||||||
# Construct the release snippet
|
# Construct the release snippet
|
||||||
release_snippet="\
|
release_snippet="\
|
||||||
|
|
|
@ -8,16 +8,6 @@ IWAD_FILES=("DOOM1.WAD" "DOOM.WAD" "DOOM2.WAD" "DOOM2F.WAD" "DOOM64.WAD" "TNT.WA
|
||||||
"doom_complete.pk3"
|
"doom_complete.pk3"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Function to log messages to terminal and a log file
|
|
||||||
log() {
|
|
||||||
local message="$1"
|
|
||||||
local logfile="$rdhome/logs/gzdoom.log"
|
|
||||||
local timestamp="$(date +[%Y-%m-%d\ %H:%M:%S])"
|
|
||||||
|
|
||||||
echo "$timestamp $message" | tee -a "$logfile"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Function to check if a file is an IWAD
|
# Function to check if a file is an IWAD
|
||||||
is_iwad() {
|
is_iwad() {
|
||||||
local file="$1"
|
local file="$1"
|
||||||
|
@ -62,8 +52,8 @@ if [[ "${1##*.}" != "doom" ]]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Log the command
|
# Log the command
|
||||||
log "[INFO] Loading: \"$1\""
|
log i "Loading: \"$1\""
|
||||||
log "[INFO] Executing command \"$command\""
|
log i "Executing command \"$command\""
|
||||||
|
|
||||||
# Execute the command
|
# Execute the command
|
||||||
eval "$command"
|
eval "$command"
|
||||||
|
@ -71,11 +61,11 @@ if [[ "${1##*.}" != "doom" ]]; then
|
||||||
# Check if $1 is a .doom file
|
# Check if $1 is a .doom file
|
||||||
else
|
else
|
||||||
doom_file="$1"
|
doom_file="$1"
|
||||||
log "[INFO] Found a doom file: \"$1\""
|
log i "Found a doom file: \"$1\""
|
||||||
|
|
||||||
# Check if the .doom file exists
|
# Check if the .doom file exists
|
||||||
if [[ ! -e "$doom_file" ]]; then
|
if [[ ! -e "$doom_file" ]]; then
|
||||||
log "[Error] doom file not found in \"$doom_file\""
|
log e "doom file not found in \"$doom_file\""
|
||||||
zenity --error --no-wrap \
|
zenity --error --no-wrap \
|
||||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||||
--title "RetroDECK" \
|
--title "RetroDECK" \
|
||||||
|
@ -103,15 +93,15 @@ else
|
||||||
# Check if the file is an IWAD
|
# Check if the file is an IWAD
|
||||||
if [[ $(is_iwad "$found_file") == "true" ]]; then
|
if [[ $(is_iwad "$found_file") == "true" ]]; then
|
||||||
command+=" -iwad $found_file"
|
command+=" -iwad $found_file"
|
||||||
log "[INFO] Appending the param \"-iwad $found_file\""
|
log i "Appending the param \"-iwad $found_file\""
|
||||||
else
|
else
|
||||||
command+=" -file $found_file"
|
command+=" -file $found_file"
|
||||||
log "[INFO] Appending the param \"-file $found_file\""
|
log i "Appending the param \"-file $found_file\""
|
||||||
fi
|
fi
|
||||||
done < "$doom_file"
|
done < "$doom_file"
|
||||||
|
|
||||||
# Log the command
|
# Log the command
|
||||||
log "[INFO] Executing command \"$command\""
|
log i "Executing command \"$command\""
|
||||||
|
|
||||||
# Execute the command
|
# Execute the command
|
||||||
eval "$command"
|
eval "$command"
|
||||||
|
|
|
@ -13,7 +13,7 @@ save_migration() {
|
||||||
# ROMs on Internal
|
# ROMs on Internal
|
||||||
roms_folder="$HOME/retrodeck/roms"
|
roms_folder="$HOME/retrodeck/roms"
|
||||||
fi
|
fi
|
||||||
echo "ROMs folder found at $roms_folder"
|
log i "ROMs folder found at $roms_folder"
|
||||||
|
|
||||||
# Unhiding downloaded media from the previous versions
|
# Unhiding downloaded media from the previous versions
|
||||||
if [ -d "$rdhome/.downloaded_media" ]
|
if [ -d "$rdhome/.downloaded_media" ]
|
||||||
|
@ -30,7 +30,7 @@ save_migration() {
|
||||||
# Doing the dir prep as we don't know from which version we came
|
# Doing the dir prep as we don't know from which version we came
|
||||||
dir_prep "$media_folder" "/var/config/ES-DE/downloaded_media"
|
dir_prep "$media_folder" "/var/config/ES-DE/downloaded_media"
|
||||||
dir_prep "$themes_folder" "/var/config/ES-DE/themes"
|
dir_prep "$themes_folder" "/var/config/ES-DE/themes"
|
||||||
mkdir -pv $rdhome/logs #this was added later, maybe safe to remove in a few versions
|
create_dir $rdhome/logs #this was added later, maybe safe to remove in a few versions
|
||||||
|
|
||||||
# Resetting es_settings, now we need it but in the future I should think a better solution, maybe with sed
|
# Resetting es_settings, now we need it but in the future I should think a better solution, maybe with sed
|
||||||
cp -fv /app/retrodeck/es_settings.xml /var/config/ES-DE/settings/es_settings.xml
|
cp -fv /app/retrodeck/es_settings.xml /var/config/ES-DE/settings/es_settings.xml
|
||||||
|
@ -72,9 +72,9 @@ save_migration() {
|
||||||
gamestoskip=
|
gamestoskip=
|
||||||
|
|
||||||
tar -C $rdhome -czf $save_backup_file saves # Backup save directory for safety
|
tar -C $rdhome -czf $save_backup_file saves # Backup save directory for safety
|
||||||
echo "Saves backed up to" $save_backup_file >> $migration_logfile
|
log i "Saves backed up to" $save_backup_file $migration_logfile
|
||||||
tar -C $rdhome -czf $state_backup_file states # Backup state directory for safety
|
tar -C $rdhome -czf $state_backup_file states # Backup state directory for safety
|
||||||
echo "States backed up to" $state_backup_file >> $migration_logfile
|
log i "States backed up to" $state_backup_file $migration_logfile
|
||||||
|
|
||||||
(
|
(
|
||||||
movefile() { # Take matching save and rom files and sort save into appropriate system folder
|
movefile() { # Take matching save and rom files and sort save into appropriate system folder
|
||||||
|
@ -92,21 +92,22 @@ save_migration() {
|
||||||
gamestoskip+=("$1")
|
gamestoskip+=("$1")
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
echo "INFO: Examining ROM file:" "$game" >> $migration_logfile
|
log i "Examining ROM file:" "$game" $migration_logfile
|
||||||
echo "INFO: System detected as" $systemdir >> $migration_logfile
|
log i "System detected as" $systemdir $migration_logfile
|
||||||
sosfile=$(sed -e "s/\^/ /g" <<< "$2") # Remove whitespace placeholder from s-ave o-r s-tate file
|
sosfile=$(sed -e "s/\^/ /g" <<< "$2") # Remove whitespace placeholder from s-ave o-r s-tate file
|
||||||
sospurebasename="$(basename "$sosfile")" # Extract pure file name ie. /saves/game1.sav becomes game1
|
sospurebasename="$(basename "$sosfile")" # Extract pure file name ie. /saves/game1.sav becomes game1
|
||||||
echo "INFO: Current save or state being examined for match:" $sosfile >> $migration_logfile
|
log i "Current save or state being examined for match:" $sosfile $migration_logfile
|
||||||
echo "INFO: Matching save or state" $sosfile "and game" $game "found." >> $migration_logfile
|
log i "Matching save or state" $sosfile "and game" $game "found." $migration_logfile
|
||||||
echo "INFO: Moving save or state to" $current_dest_folder"/"$systemdir"/"$sosbasename >> $migration_logfile
|
log i "Moving save or state to $current_dest_folder/$systemdir/$sosbasename" $migration_logfile
|
||||||
if [[ ! -d $current_dest_folder"/"$systemdir ]]; then # If system directory doesn't exist for save yet, create it
|
if [[ ! -d $current_dest_folder"/"$systemdir ]]; then # If system directory doesn't exist for save yet, create it
|
||||||
echo "WARNING: Creating missing system directory" $current_dest_folder"/"$systemdir
|
log w "Creating missing system directory $current_dest_folder/$systemdir"
|
||||||
mkdir $current_dest_folder/$systemdir
|
mkdir $current_dest_folder/$systemdir
|
||||||
fi
|
fi
|
||||||
mv "$sosfile" -t $current_dest_folder/$systemdir # Move save to appropriate system directory
|
mv "$sosfile" -t $current_dest_folder/$systemdir # Move save to appropriate system directory
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
echo "WARNING: Game with name" "$(basename "$1" | sed -e "s/\^/ /g")" "already found. Skipping to next game..." >> $migration_logfile # Inform user of game being skipped due to duplicate ROM names
|
local name="$(basename "$1" | sed -e "s/\^/ /g")"
|
||||||
|
log w "Game with name \"$name\" already found. Skipping to next game..." $migration_logfile # Inform user of game being skipped due to duplicate ROM names
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -167,6 +168,6 @@ save_migration() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
else
|
else
|
||||||
echo "Version" $version "is after the save and state organization was changed, no need to sort again"
|
log i "Version $version is after the save and state organization was changed, no need to sort again"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
|
@ -82,7 +82,7 @@ check_for_version_update() {
|
||||||
configurator_generic_dialog "RetroDECK Online Update" "The update process may take several minutes.\n\nAfter the update is complete, RetroDECK will close. When you run it again you will be using the latest version."
|
configurator_generic_dialog "RetroDECK Online Update" "The update process may take several minutes.\n\nAfter the update is complete, RetroDECK will close. When you run it again you will be using the latest version."
|
||||||
(
|
(
|
||||||
local latest_cooker_download=$(curl --silent https://api.github.com/repos/XargonWan/$update_repo/releases/latest | grep '"browser_download_url":' | sed -E 's/.*"([^"]+)".*/\1/')
|
local latest_cooker_download=$(curl --silent https://api.github.com/repos/XargonWan/$update_repo/releases/latest | grep '"browser_download_url":' | sed -E 's/.*"([^"]+)".*/\1/')
|
||||||
mkdir -p "$rdhome/RetroDECK_Updates"
|
create_dir "$rdhome/RetroDECK_Updates"
|
||||||
wget -P "$rdhome/RetroDECK_Updates" $latest_cooker_download
|
wget -P "$rdhome/RetroDECK_Updates" $latest_cooker_download
|
||||||
flatpak-spawn --host flatpak remove --noninteractive -y net.retrodeck.retrodeck # Remove current version before installing new one, to avoid duplicates
|
flatpak-spawn --host flatpak remove --noninteractive -y net.retrodeck.retrodeck # Remove current version before installing new one, to avoid duplicates
|
||||||
flatpak-spawn --host flatpak install --user --bundle --noninteractive -y "$rdhome/RetroDECK_Updates/RetroDECK-cooker.flatpak"
|
flatpak-spawn --host flatpak install --user --bundle --noninteractive -y "$rdhome/RetroDECK_Updates/RetroDECK-cooker.flatpak"
|
||||||
|
|
|
@ -162,6 +162,8 @@ changelog_dialog() {
|
||||||
# The function also accepts "all" as a version, and will print the entire changelog
|
# The function also accepts "all" as a version, and will print the entire changelog
|
||||||
# USAGE: changelog_dialog "version"
|
# USAGE: changelog_dialog "version"
|
||||||
|
|
||||||
|
log d "Showing changelog dialog"
|
||||||
|
|
||||||
if [[ "$1" == "all" ]]; then
|
if [[ "$1" == "all" ]]; then
|
||||||
xml sel -t -m "//release" -v "concat('RetroDECK version: ', @version)" -n -v "description" -n $rd_appdata | awk '{$1=$1;print}' | sed -e '/./b' -e :n -e 'N;s/\n$//;tn' > "/var/config/retrodeck/changelog.txt"
|
xml sel -t -m "//release" -v "concat('RetroDECK version: ', @version)" -n -v "description" -n $rd_appdata | awk '{$1=$1;print}' | sed -e '/./b' -e :n -e 'N;s/\n$//;tn' > "/var/config/retrodeck/changelog.txt"
|
||||||
|
|
||||||
|
@ -186,6 +188,8 @@ get_cheevos_token_dialog() {
|
||||||
# This function will return a RetroAchvievements token from a valid username and password, will return "login failed" otherwise
|
# This function will return a RetroAchvievements token from a valid username and password, will return "login failed" otherwise
|
||||||
# USAGE: get_cheevos_token_dialog
|
# USAGE: get_cheevos_token_dialog
|
||||||
|
|
||||||
|
log d "Opening RetroAchievements dialog"
|
||||||
|
|
||||||
local cheevos_info=$(zenity --forms --title="Cheevos" \
|
local cheevos_info=$(zenity --forms --title="Cheevos" \
|
||||||
--text="Username and password." \
|
--text="Username and password." \
|
||||||
--separator="^" \
|
--separator="^" \
|
||||||
|
@ -211,15 +215,20 @@ desktop_mode_warning() {
|
||||||
# USAGE: desktop_mode_warning
|
# USAGE: desktop_mode_warning
|
||||||
|
|
||||||
if [[ $(check_desktop_mode) == "true" && $desktop_mode_warning == "true" ]]; then
|
if [[ $(check_desktop_mode) == "true" && $desktop_mode_warning == "true" ]]; then
|
||||||
|
local message='You appear to be running RetroDECK in the Steam Deck'\''s Desktop mode!\n\nSome functions of RetroDECK may not work properly in Desktop mode, such as the Steam Deck'\''s normal controls.\n\nRetroDECK is best enjoyed in Game mode!\n\nDo you still want to proceed?'
|
||||||
|
log i "Showing message:\n$message"
|
||||||
choice=$(zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="Yes" --extra-button="No" --extra-button="Never show this again" \
|
choice=$(zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="Yes" --extra-button="No" --extra-button="Never show this again" \
|
||||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||||
--title "RetroDECK Desktop Mode Warning" \
|
--title "RetroDECK Desktop Mode Warning" \
|
||||||
--text="You appear to be running RetroDECK in the Steam Deck's Desktop mode!\n\nSome functions of RetroDECK may not work properly in Desktop mode, such as the Steam Deck's normal controls.\n\nRetroDECK is best enjoyed in Game mode!\n\nDo you still want to proceed?")
|
--text="$message")
|
||||||
rc=$? # Capture return code, as "Yes" button has no text value
|
rc=$? # Capture return code, as "Yes" button has no text value
|
||||||
if [[ $rc == "1" ]]; then # If any button other than "Yes" was clicked
|
if [[ $rc == "1" ]]; then # If any button other than "Yes" was clicked
|
||||||
|
log i "Selected: \"Yes\""
|
||||||
if [[ $choice == "No" ]]; then
|
if [[ $choice == "No" ]]; then
|
||||||
|
log i "Selected: \"No\""
|
||||||
exit 1
|
exit 1
|
||||||
elif [[ $choice == "Never show this again" ]]; then
|
elif [[ $choice == "Never show this again" ]]; then
|
||||||
|
log i "Selected: \"Never show this again\""
|
||||||
set_setting_value $rd_conf "desktop_mode_warning" "false" retrodeck "options" # Store desktop mode warning variable for future checks
|
set_setting_value $rd_conf "desktop_mode_warning" "false" retrodeck "options" # Store desktop mode warning variable for future checks
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -233,13 +242,17 @@ low_space_warning() {
|
||||||
if [[ $low_space_warning == "true" ]]; then
|
if [[ $low_space_warning == "true" ]]; then
|
||||||
local used_percent=$(df --output=pcent "$HOME" | tail -1 | tr -d " " | tr -d "%")
|
local used_percent=$(df --output=pcent "$HOME" | tail -1 | tr -d " " | tr -d "%")
|
||||||
if [[ "$used_percent" -ge 90 && -d "$HOME/retrodeck" ]]; then # If there is any RetroDECK data on the main drive to move
|
if [[ "$used_percent" -ge 90 && -d "$HOME/retrodeck" ]]; then # If there is any RetroDECK data on the main drive to move
|
||||||
|
local message='Your main drive is over 90% full!\n\nIf your drive fills completely this can lead to data loss or system crash.\n\nPlease consider moving some RetroDECK folders to other storage locations using the Configurator.'
|
||||||
|
log i "Showing message:\n$message"
|
||||||
choice=$(zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="OK" --extra-button="Never show this again" \
|
choice=$(zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="OK" --extra-button="Never show this again" \
|
||||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||||
--title "RetroDECK Low Space Warning" \
|
--title "RetroDECK Low Space Warning" \
|
||||||
--text="Your main drive is over 90% full!\n\nIf your drive fills completely this can lead to data loss or system crash.\n\nPlease consider moving some RetroDECK folders to other storage locations using the Configurator.")
|
--text="$message")
|
||||||
if [[ $choice == "Never show this again" ]]; then
|
if [[ $choice == "Never show this again" ]]; then
|
||||||
|
log i "Selected: \"Never show this again\""
|
||||||
set_setting_value $rd_conf "low_space_warning" "false" retrodeck "options" # Store low space warning variable for future checks
|
set_setting_value $rd_conf "low_space_warning" "false" retrodeck "options" # Store low space warning variable for future checks
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
log i "Selected: \"OK\""
|
||||||
fi
|
fi
|
||||||
}
|
}
|
|
@ -16,6 +16,7 @@ directory_browse() {
|
||||||
if [ $? == 0 ]
|
if [ $? == 0 ]
|
||||||
then
|
then
|
||||||
path_selected=true
|
path_selected=true
|
||||||
|
log i "\"$target\" selected."
|
||||||
echo "$target"
|
echo "$target"
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
|
@ -46,6 +47,7 @@ file_browse() {
|
||||||
if [ $? == 0 ]
|
if [ $? == 0 ]
|
||||||
then
|
then
|
||||||
file_selected=true
|
file_selected=true
|
||||||
|
log i "\"$target\" selected."
|
||||||
echo "$target"
|
echo "$target"
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
|
@ -69,9 +71,12 @@ verify_space() {
|
||||||
source_size=$((source_size+(source_size/10))) # Add 10% to source size for safety
|
source_size=$((source_size+(source_size/10))) # Add 10% to source size for safety
|
||||||
dest_avail=$(df -k --output=avail "$2" | tail -1)
|
dest_avail=$(df -k --output=avail "$2" | tail -1)
|
||||||
|
|
||||||
|
log i "Checking free disk space"
|
||||||
if [[ $source_size -ge $dest_avail ]]; then
|
if [[ $source_size -ge $dest_avail ]]; then
|
||||||
|
log e "Not enough disk space: $dest_avail"
|
||||||
echo "false"
|
echo "false"
|
||||||
else
|
else
|
||||||
|
log i "Disk space is enough: $dest_avail"
|
||||||
echo "true"
|
echo "true"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -83,6 +88,8 @@ move() {
|
||||||
source_dir="$(echo $1 | sed 's![^/]$!&/!')" # Add trailing slash if it is missing
|
source_dir="$(echo $1 | sed 's![^/]$!&/!')" # Add trailing slash if it is missing
|
||||||
dest_dir="$(echo $2 | sed 's![^/]$!&/!')" # Add trailing slash if it is missing
|
dest_dir="$(echo $2 | sed 's![^/]$!&/!')" # Add trailing slash if it is missing
|
||||||
|
|
||||||
|
log d "Moving \"$source_dir\" to \"$dest_dir\""
|
||||||
|
|
||||||
(
|
(
|
||||||
rsync -a --remove-source-files --ignore-existing --mkpath "$source_dir" "$dest_dir" # Copy files but don't overwrite conflicts
|
rsync -a --remove-source-files --ignore-existing --mkpath "$source_dir" "$dest_dir" # Copy files but don't overwrite conflicts
|
||||||
find "$source_dir" -type d -empty -delete # Cleanup empty folders that were left behind
|
find "$source_dir" -type d -empty -delete # Cleanup empty folders that were left behind
|
||||||
|
@ -100,6 +107,27 @@ move() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
create_dir() {
|
||||||
|
# A simple function that creates a directory checking if is still there while logging the activity
|
||||||
|
# If -d it will delete it prior the creation
|
||||||
|
|
||||||
|
if [[ "$1" == "-d" ]]; then
|
||||||
|
# If "force" flag is provided, delete the directory first
|
||||||
|
shift # Remove the first argument (-f)
|
||||||
|
if [[ -e "$1" ]]; then
|
||||||
|
rm -rf "$1" # Forcefully delete the directory
|
||||||
|
log d "Found \"$1\", deleting it."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -d "$1" ]]; then
|
||||||
|
mkdir -p "$1" # Create directory if it doesn't exist
|
||||||
|
log d "Created directory: $1"
|
||||||
|
else
|
||||||
|
log d "Directory \"$1\" already exists, skipping."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
download_file() {
|
download_file() {
|
||||||
# Function to download file from the Internet, with Zenity progress bar
|
# Function to download file from the Internet, with Zenity progress bar
|
||||||
# USAGE: download_file $source_url $file_dest $file_name
|
# USAGE: download_file $source_url $file_dest $file_name
|
||||||
|
@ -216,51 +244,51 @@ dir_prep() {
|
||||||
real="$1"
|
real="$1"
|
||||||
symlink="$2"
|
symlink="$2"
|
||||||
|
|
||||||
echo -e "\n[DIR PREP]\nMoving $symlink in $real" #DEBUG
|
log d "[DIR PREP]\nMoving $symlink in $real" #DEBUG
|
||||||
|
|
||||||
# if the symlink dir is already a symlink, unlink it first, to prevent recursion
|
# if the symlink dir is already a symlink, unlink it first, to prevent recursion
|
||||||
if [ -L "$symlink" ];
|
if [ -L "$symlink" ];
|
||||||
then
|
then
|
||||||
echo "$symlink is already a symlink, unlinking to prevent recursives" #DEBUG
|
log d "$symlink is already a symlink, unlinking to prevent recursives" #DEBUG
|
||||||
unlink "$symlink"
|
unlink "$symlink"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# if the dest dir exists we want to backup it
|
# if the dest dir exists we want to backup it
|
||||||
if [ -d "$symlink" ];
|
if [ -d "$symlink" ];
|
||||||
then
|
then
|
||||||
echo "$symlink found" #DEBUG
|
log d "$symlink found" #DEBUG
|
||||||
mv -f "$symlink" "$symlink.old"
|
mv -f "$symlink" "$symlink.old"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# if the real dir is already a symlink, unlink it first
|
# if the real dir is already a symlink, unlink it first
|
||||||
if [ -L "$real" ];
|
if [ -L "$real" ];
|
||||||
then
|
then
|
||||||
echo "$real is already a symlink, unlinking to prevent recursives" #DEBUG
|
log d "$real is already a symlink, unlinking to prevent recursives" #DEBUG
|
||||||
unlink "$real"
|
unlink "$real"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# if the real dir doesn't exist we create it
|
# if the real dir doesn't exist we create it
|
||||||
if [ ! -d "$real" ];
|
if [ ! -d "$real" ];
|
||||||
then
|
then
|
||||||
echo "$real not found, creating it" #DEBUG
|
log d "$real not found, creating it" #DEBUG
|
||||||
mkdir -pv "$real"
|
create_dir "$real"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# creating the symlink
|
# creating the symlink
|
||||||
echo "linking $real in $symlink" #DEBUG
|
log d "linking $real in $symlink" #DEBUG
|
||||||
mkdir -pv "$(dirname "$symlink")" # creating the full path except the last folder
|
create_dir "$(dirname "$symlink")" # creating the full path except the last folder
|
||||||
ln -svf "$real" "$symlink"
|
ln -svf "$real" "$symlink"
|
||||||
|
|
||||||
# moving everything from the old folder to the new one, delete the old one
|
# moving everything from the old folder to the new one, delete the old one
|
||||||
if [ -d "$symlink.old" ];
|
if [ -d "$symlink.old" ];
|
||||||
then
|
then
|
||||||
echo "Moving the data from $symlink.old to $real" #DEBUG
|
log d "Moving the data from $symlink.old to $real" #DEBUG
|
||||||
mv -f "$symlink.old"/{.[!.],}* "$real"
|
mv -f "$symlink.old"/{.[!.],}* "$real"
|
||||||
echo "Removing $symlink.old" #DEBUG
|
log d "Removing $symlink.old" #DEBUG
|
||||||
rm -rf "$symlink.old"
|
rm -rf "$symlink.old"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo -e "$symlink is now $real\n"
|
log i "$symlink is now $real\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
check_bios_files() {
|
check_bios_files() {
|
||||||
|
@ -294,7 +322,7 @@ check_bios_files() {
|
||||||
}
|
}
|
||||||
|
|
||||||
update_rpcs3_firmware() {
|
update_rpcs3_firmware() {
|
||||||
mkdir -p "$roms_folder/ps3/tmp"
|
create_dir "$roms_folder/ps3/tmp"
|
||||||
chmod 777 "$roms_folder/ps3/tmp"
|
chmod 777 "$roms_folder/ps3/tmp"
|
||||||
download_file "$rpcs3_firmware" "$roms_folder/ps3/tmp/PS3UPDAT.PUP" "RPCS3 Firmware"
|
download_file "$rpcs3_firmware" "$roms_folder/ps3/tmp/PS3UPDAT.PUP" "RPCS3 Firmware"
|
||||||
rpcs3 --installfw "$roms_folder/ps3/tmp/PS3UPDAT.PUP"
|
rpcs3 --installfw "$roms_folder/ps3/tmp/PS3UPDAT.PUP"
|
||||||
|
@ -309,7 +337,7 @@ update_vita3k_firmware() {
|
||||||
}
|
}
|
||||||
|
|
||||||
backup_retrodeck_userdata() {
|
backup_retrodeck_userdata() {
|
||||||
mkdir -p "$backups_folder"
|
create_dir "$backups_folder"
|
||||||
zip -rq9 "$backups_folder/$(date +"%0m%0d")_retrodeck_userdata.zip" "$saves_folder" "$states_folder" "$bios_folder" "$media_folder" "$themes_folder" "$logs_folder" "$screenshots_folder" "$mods_folder" "$texture_packs_folder" "$borders_folder" > $logs_folder/$(date +"%0m%0d")_backup_log.log
|
zip -rq9 "$backups_folder/$(date +"%0m%0d")_retrodeck_userdata.zip" "$saves_folder" "$states_folder" "$bios_folder" "$media_folder" "$themes_folder" "$logs_folder" "$screenshots_folder" "$mods_folder" "$texture_packs_folder" "$borders_folder" > $logs_folder/$(date +"%0m%0d")_backup_log.log
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -340,6 +368,7 @@ do
|
||||||
if [ $? == 0 ] #yes
|
if [ $? == 0 ] #yes
|
||||||
then
|
then
|
||||||
path_selected=true
|
path_selected=true
|
||||||
|
log i "\"$target/retrodeck\" selected."
|
||||||
echo "$target/retrodeck"
|
echo "$target/retrodeck"
|
||||||
break
|
break
|
||||||
else
|
else
|
||||||
|
@ -381,28 +410,29 @@ finit_user_options_dialog() {
|
||||||
--column "option_flag" \
|
--column "option_flag" \
|
||||||
"${finit_available_options[@]}")
|
"${finit_available_options[@]}")
|
||||||
|
|
||||||
|
log i "User choiches: \"${choices[*]}\"."
|
||||||
echo "${choices[*]}"
|
echo "${choices[*]}"
|
||||||
}
|
}
|
||||||
|
|
||||||
finit() {
|
finit() {
|
||||||
# Force/First init, depending on the situation
|
# Force/First init, depending on the situation
|
||||||
|
|
||||||
echo "Executing finit"
|
log i "Executing finit"
|
||||||
|
|
||||||
# Internal or SD Card?
|
# Internal or SD Card?
|
||||||
local finit_dest_choice=$(configurator_destination_choice_dialog "RetroDECK data" "Welcome to the first configuration of RetroDECK.\nThe setup will be quick but please READ CAREFULLY each message in order to avoid misconfigurations.\n\nWhere do you want your RetroDECK data folder to be located?\n\nThis folder will contain all ROMs, BIOSs and scraped data." )
|
local finit_dest_choice=$(configurator_destination_choice_dialog "RetroDECK data" "Welcome to the first configuration of RetroDECK.\nThe setup will be quick but please READ CAREFULLY each message in order to avoid misconfigurations.\n\nWhere do you want your RetroDECK data folder to be located?\n\nThis folder will contain all ROMs, BIOSs and scraped data." )
|
||||||
echo "Choice is $finit_dest_choice"
|
log i "Choice is $finit_dest_choice"
|
||||||
|
|
||||||
case "$finit_dest_choice" in
|
case "$finit_dest_choice" in
|
||||||
|
|
||||||
"Back" | "" ) # Back or X button quits
|
"Back" | "" ) # Back or X button quits
|
||||||
rm -f "$rd_conf" # Cleanup unfinished retrodeck.cfg if first install is interrupted
|
rm -f "$rd_conf" # Cleanup unfinished retrodeck.cfg if first install is interrupted
|
||||||
echo "Now quitting"
|
log i "Now quitting"
|
||||||
quit_retrodeck
|
quit_retrodeck
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Internal Storage" ) # Internal
|
"Internal Storage" ) # Internal
|
||||||
echo "Internal selected"
|
log i "Internal selected"
|
||||||
rdhome="$HOME/retrodeck"
|
rdhome="$HOME/retrodeck"
|
||||||
if [[ -L "$rdhome" ]]; then #Remove old symlink from existing install, if it exists
|
if [[ -L "$rdhome" ]]; then #Remove old symlink from existing install, if it exists
|
||||||
unlink "$rdhome"
|
unlink "$rdhome"
|
||||||
|
@ -410,10 +440,10 @@ finit() {
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"SD Card" )
|
"SD Card" )
|
||||||
echo "SD Card selected"
|
log i "SD Card selected"
|
||||||
if [ ! -d "$sdcard" ] # SD Card path is not existing
|
if [ ! -d "$sdcard" ] # SD Card path is not existing
|
||||||
then
|
then
|
||||||
echo "Error: SD card not found"
|
log e "SD card not found"
|
||||||
zenity --error --no-wrap \
|
zenity --error --no-wrap \
|
||||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||||
--title "RetroDECK" \
|
--title "RetroDECK" \
|
||||||
|
@ -426,14 +456,14 @@ finit() {
|
||||||
fi
|
fi
|
||||||
elif [ ! -w "$sdcard" ] #SD card found but not writable
|
elif [ ! -w "$sdcard" ] #SD card found but not writable
|
||||||
then
|
then
|
||||||
echo "Error: SD card found but not writable"
|
log e "SD card found but not writable"
|
||||||
zenity --error --no-wrap \
|
zenity --error --no-wrap \
|
||||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||||
--title "RetroDECK" \
|
--title "RetroDECK" \
|
||||||
--ok-label "Quit" \
|
--ok-label "Quit" \
|
||||||
--text="SD card was found but is not writable\nThis can happen with cards formatted on PC.\nPlease format the SD card through the Steam Deck's Game Mode and run RetroDECK again."
|
--text="SD card was found but is not writable\nThis can happen with cards formatted on PC.\nPlease format the SD card through the Steam Deck's Game Mode and run RetroDECK again."
|
||||||
rm -f "$rd_conf" # Cleanup unfinished retrodeck.cfg if first install is interrupted
|
rm -f "$rd_conf" # Cleanup unfinished retrodeck.cfg if first install is interrupted
|
||||||
echo "Now quitting"
|
log i "Now quitting"
|
||||||
quit_retrodeck
|
quit_retrodeck
|
||||||
else
|
else
|
||||||
rdhome="$sdcard/retrodeck"
|
rdhome="$sdcard/retrodeck"
|
||||||
|
@ -441,7 +471,7 @@ finit() {
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Custom Location" )
|
"Custom Location" )
|
||||||
echo "Custom Location selected"
|
log i "Custom Location selected"
|
||||||
zenity --info --no-wrap \
|
zenity --info --no-wrap \
|
||||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||||
--title "RetroDECK" \
|
--title "RetroDECK" \
|
||||||
|
@ -513,11 +543,11 @@ install_retrodeck_starterpack() {
|
||||||
|
|
||||||
## DOOM section ##
|
## DOOM section ##
|
||||||
cp /app/retrodeck/extras/doom1.wad "$roms_folder/doom/doom1.wad" # No -f in case the user already has it
|
cp /app/retrodeck/extras/doom1.wad "$roms_folder/doom/doom1.wad" # No -f in case the user already has it
|
||||||
mkdir -p "/var/config/ES-DE/gamelists/doom"
|
create_dir "/var/config/ES-DE/gamelists/doom"
|
||||||
if [[ ! -f "/var/config/ES-DE/gamelists/doom/gamelist.xml" ]]; then # Don't overwrite an existing gamelist
|
if [[ ! -f "/var/config/ES-DE/gamelists/doom/gamelist.xml" ]]; then # Don't overwrite an existing gamelist
|
||||||
cp "/app/retrodeck/rd_prepacks/doom/gamelist.xml" "/var/config/ES-DE/gamelists/doom/gamelist.xml"
|
cp "/app/retrodeck/rd_prepacks/doom/gamelist.xml" "/var/config/ES-DE/gamelists/doom/gamelist.xml"
|
||||||
fi
|
fi
|
||||||
mkdir -p "$media_folder/doom"
|
create_dir "$media_folder/doom"
|
||||||
unzip -oq "/app/retrodeck/rd_prepacks/doom/doom.zip" -d "$media_folder/doom/"
|
unzip -oq "/app/retrodeck/rd_prepacks/doom/doom.zip" -d "$media_folder/doom/"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -599,7 +629,7 @@ manage_ryujinx_keys() {
|
||||||
# This function checks if Switch keys are existing and symlinks them inside the Ryujinx system folder
|
# This function checks if Switch keys are existing and symlinks them inside the Ryujinx system folder
|
||||||
# If the symlinks are broken it recreates them
|
# If the symlinks are broken it recreates them
|
||||||
|
|
||||||
echo "Checking Ryujinx Switch keys." #TODO logging
|
log i "Checking Ryujinx Switch keys."
|
||||||
local ryujinx_system="/var/config/Ryujinx/system" # Set the path to the Ryujinx system folder
|
local ryujinx_system="/var/config/Ryujinx/system" # Set the path to the Ryujinx system folder
|
||||||
# Check if the keys folder exists
|
# Check if the keys folder exists
|
||||||
if [ -d "$bios_folder/switch/keys" ]; then
|
if [ -d "$bios_folder/switch/keys" ]; then
|
||||||
|
@ -612,12 +642,12 @@ manage_ryujinx_keys() {
|
||||||
|
|
||||||
# Check if the symlink exists and is valid
|
# Check if the symlink exists and is valid
|
||||||
if [ -L "$symlink" ] && [ "$(readlink -f "$symlink")" = "$file" ]; then
|
if [ -L "$symlink" ] && [ "$(readlink -f "$symlink")" = "$file" ]; then
|
||||||
echo "Found \"$symlink\" and it's a valid symlink." #TODO logging
|
log i "Found \"$symlink\" and it's a valid symlink."
|
||||||
continue # Skip if the symlink is already valid
|
continue # Skip if the symlink is already valid
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Remove broken symlink or non-symlink file
|
# Remove broken symlink or non-symlink file
|
||||||
echo "Found \"$symlink\" but it's not a valid symlink. Repairing it" #TODO logging
|
log w "Found \"$symlink\" but it's not a valid symlink. Repairing it"
|
||||||
[ -e "$symlink" ] && rm "$symlink"
|
[ -e "$symlink" ] && rm "$symlink"
|
||||||
|
|
||||||
# Create symlink
|
# Create symlink
|
||||||
|
@ -625,18 +655,17 @@ manage_ryujinx_keys() {
|
||||||
echo "Created symlink: \"$symlink\""
|
echo "Created symlink: \"$symlink\""
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
echo "No files found in $bios_folder/switch/keys. Continuing" #TODO logging
|
log w "No files found in $bios_folder/switch/keys. Continuing..."
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "Directory $bios_folder/switch/keys does not exist. Maybe Ryujinx was never run. Continuing" #TODO logging
|
log w "Directory $bios_folder/switch/keys does not exist. Maybe Ryujinx was never run. Continuing..."
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# TODO: this function is not yet used
|
# TODO: this function is not yet used
|
||||||
branch_selector() {
|
branch_selector() {
|
||||||
# Fetch branches from GitHub API excluding "main"
|
log d "Fetch branches from GitHub API excluding \"main\""
|
||||||
branches=$(curl -s https://api.github.com/repos/XargonWan/RetroDECK/branches | grep '"name":' | awk -F '"' '$4 != "main" {print $4}')
|
branches=$(curl -s https://api.github.com/repos/XargonWan/RetroDECK/branches | grep '"name":' | awk -F '"' '$4 != "main" {print $4}')
|
||||||
# TODO: logging - Fetching branches from GitHub API
|
|
||||||
|
|
||||||
# Create an array to store branch names
|
# Create an array to store branch names
|
||||||
branch_array=()
|
branch_array=()
|
||||||
|
@ -674,7 +703,7 @@ branch_selector() {
|
||||||
configurator_generic_dialog "RetroDECK Online Update" "The update process may take several minutes.\n\nAfter the update is complete, RetroDECK will close. When you run it again you will be using the latest version."
|
configurator_generic_dialog "RetroDECK Online Update" "The update process may take several minutes.\n\nAfter the update is complete, RetroDECK will close. When you run it again you will be using the latest version."
|
||||||
(
|
(
|
||||||
local desired_flatpak_file=$(curl --silent $flatpak_file_url | grep '"browser_download_url":' | sed -E 's/.*"([^"]+)".*/\1/')
|
local desired_flatpak_file=$(curl --silent $flatpak_file_url | grep '"browser_download_url":' | sed -E 's/.*"([^"]+)".*/\1/')
|
||||||
mkdir -p "$rdhome/RetroDECK_Updates"
|
create_dir "$rdhome/RetroDECK_Updates"
|
||||||
wget -P "$rdhome/RetroDECK_Updates" $desired_flatpak_file
|
wget -P "$rdhome/RetroDECK_Updates" $desired_flatpak_file
|
||||||
flatpak-spawn --host flatpak remove --noninteractive -y net.retrodeck.retrodeck # Remove current version before installing new one, to avoid duplicates
|
flatpak-spawn --host flatpak remove --noninteractive -y net.retrodeck.retrodeck # Remove current version before installing new one, to avoid duplicates
|
||||||
flatpak-spawn --host flatpak install --user --bundle --noninteractive -y "$rdhome/RetroDECK_Updates/RetroDECK-cooker.flatpak"
|
flatpak-spawn --host flatpak install --user --bundle --noninteractive -y "$rdhome/RetroDECK_Updates/RetroDECK-cooker.flatpak"
|
||||||
|
@ -700,6 +729,6 @@ quit_retrodeck() {
|
||||||
start_retrodeck() {
|
start_retrodeck() {
|
||||||
easter_eggs # Check if today has a surprise splashscreen and load it if so
|
easter_eggs # Check if today has a surprise splashscreen and load it if so
|
||||||
# normal startup
|
# normal startup
|
||||||
echo "Starting RetroDECK v$version"
|
log i "Starting RetroDECK v$version"
|
||||||
es-de --home /var/config/
|
es-de --home /var/config/
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ source /app/libexec/patching.sh
|
||||||
source /app/libexec/post_update.sh
|
source /app/libexec/post_update.sh
|
||||||
source /app/libexec/prepare_component.sh
|
source /app/libexec/prepare_component.sh
|
||||||
source /app/libexec/presets.sh
|
source /app/libexec/presets.sh
|
||||||
|
source /app/libexec/logger.sh
|
||||||
|
|
||||||
# Static variables
|
# Static variables
|
||||||
rd_conf="/var/config/retrodeck/retrodeck.cfg" # RetroDECK config file path
|
rd_conf="/var/config/retrodeck/retrodeck.cfg" # RetroDECK config file path
|
||||||
|
@ -125,15 +126,15 @@ fi
|
||||||
|
|
||||||
# If there is no config file I initalize the file with the the default values
|
# If there is no config file I initalize the file with the the default values
|
||||||
if [[ ! -f "$rd_conf" ]]; then
|
if [[ ! -f "$rd_conf" ]]; then
|
||||||
mkdir -p /var/config/retrodeck
|
create_dir /var/config/retrodeck
|
||||||
echo "RetroDECK config file not found in $rd_conf"
|
log w "RetroDECK config file not found in $rd_conf"
|
||||||
echo "Initializing"
|
log i "Initializing"
|
||||||
# if we are here means that the we are in a new installation, so the version is valorized with the hardcoded one
|
# 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
|
# Initializing the variables
|
||||||
if [[ -z "$version" ]]; then
|
if [[ -z "$version" ]]; then
|
||||||
if [[ -f "$lockfile" ]]; then
|
if [[ -f "$lockfile" ]]; 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
|
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"
|
log d "Running version workaround"
|
||||||
version=$(cat $lockfile)
|
version=$(cat $lockfile)
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
@ -161,17 +162,16 @@ if [[ ! -f "$rd_conf" ]]; then
|
||||||
set_setting_value $rd_conf "developer_options" "true" retrodeck "options"
|
set_setting_value $rd_conf "developer_options" "true" retrodeck "options"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Setting config file permissions"
|
log i "Setting config file permissions"
|
||||||
chmod +rw $rd_conf
|
chmod +rw $rd_conf
|
||||||
echo "RetroDECK config file initialized. Contents:"
|
log i "RetroDECK config file initialized. Contents:\n\n$(cat $rd_conf\n)"
|
||||||
echo
|
|
||||||
cat $rd_conf
|
|
||||||
conf_read # Load new variables into memory
|
conf_read # Load new variables into memory
|
||||||
|
tmplog_merger
|
||||||
|
|
||||||
# If the config file is existing i just read the variables
|
# If the config file is existing i just read the variables
|
||||||
else
|
else
|
||||||
echo "Found RetroDECK config file in $rd_conf"
|
log i "Found RetroDECK config file in $rd_conf"
|
||||||
echo "Loading it"
|
log i "Loading it"
|
||||||
|
|
||||||
if grep -qF "cooker" <<< $hard_version; then # If newly-installed version is a "cooker" build
|
if grep -qF "cooker" <<< $hard_version; then # If newly-installed version is a "cooker" build
|
||||||
set_setting_value $rd_conf "update_repo" "RetroDECK-cooker" retrodeck "options"
|
set_setting_value $rd_conf "update_repo" "RetroDECK-cooker" retrodeck "options"
|
||||||
|
@ -180,6 +180,7 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
conf_read
|
conf_read
|
||||||
|
tmplog_merger
|
||||||
|
|
||||||
# Verify rdhome is where it is supposed to be.
|
# Verify rdhome is where it is supposed to be.
|
||||||
if [[ ! -d "$rdhome" ]]; then
|
if [[ ! -d "$rdhome" ]]; then
|
||||||
|
@ -188,6 +189,7 @@ else
|
||||||
new_home_path=$(directory_browse "RetroDECK folder location")
|
new_home_path=$(directory_browse "RetroDECK folder location")
|
||||||
set_setting_value $rd_conf "rdhome" "$new_home_path" retrodeck "paths"
|
set_setting_value $rd_conf "rdhome" "$new_home_path" retrodeck "paths"
|
||||||
conf_read
|
conf_read
|
||||||
|
tmplog_merger
|
||||||
prepare_component "retrodeck" "postmove"
|
prepare_component "retrodeck" "postmove"
|
||||||
prepare_component "all" "postmove"
|
prepare_component "all" "postmove"
|
||||||
conf_write
|
conf_write
|
||||||
|
@ -197,3 +199,5 @@ else
|
||||||
backups_folder="$rdhome/backups" # A standard location for backup file storage
|
backups_folder="$rdhome/backups" # A standard location for backup file storage
|
||||||
multi_user_data_folder="$rdhome/multi-user-data" # The default location of multi-user environment profiles
|
multi_user_data_folder="$rdhome/multi-user-data" # The default location of multi-user environment profiles
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
logs_folder="$rdhome/logs" # The path of the logs folder, here we collect all the logs
|
126
functions/logger.sh
Executable file
126
functions/logger.sh
Executable file
|
@ -0,0 +1,126 @@
|
||||||
|
# This script provides a logging function 'log' that can be sourced in other scripts.
|
||||||
|
# It logs messages to both the terminal and a specified logfile, allowing different log levels.
|
||||||
|
# The log function takes three parameters: log level, log message, and optionally the logfile. If no logfile is specified, it writes to retrodeck/logs/retrodeck.log
|
||||||
|
|
||||||
|
# Example usage:
|
||||||
|
# log w "foo" -> logs a warning with message foo in the default log file retrodeck/logs/retrodeck.log
|
||||||
|
# log e "bar" -> logs an error with message bar in the default log file retrodeck/logs/retrodeck.log
|
||||||
|
# log i "par" rekku.log -> logs an information with message in the specified log file inside the logs folder retrodeck/logs/rekku.log
|
||||||
|
|
||||||
|
# if [ "${log_init:-false}" = false ]; then
|
||||||
|
# logs_folder=${logs_folder:-"/tmp"}
|
||||||
|
# touch "$logs_folder/retrodeck.log"
|
||||||
|
# # exec > >(tee "$logs_folder/retrodeck.log") 2>&1 # this is broken, creates strange artifacts and corrupts the log file
|
||||||
|
# log_init=true
|
||||||
|
# fi
|
||||||
|
|
||||||
|
log() {
|
||||||
|
|
||||||
|
# exec > >(tee "$logs_folder/retrodeck.log") 2>&1 # this is broken, creates strange artifacts and corrupts the log file
|
||||||
|
|
||||||
|
local level="$1"
|
||||||
|
local message="$2"
|
||||||
|
local timestamp="$(date +[%Y-%m-%d\ %H:%M:%S.%3N])"
|
||||||
|
local colorize_terminal
|
||||||
|
|
||||||
|
# Use specified logfile or default to retrodeck.log
|
||||||
|
local logfile
|
||||||
|
if [ -n "$3" ]; then
|
||||||
|
logfile="$3"
|
||||||
|
else
|
||||||
|
logfile="$logs_folder/retrodeck.log"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if the shell is sh (not bash or zsh) to avoid colorization
|
||||||
|
if [ "${SHELL##*/}" = "sh" ]; then
|
||||||
|
colorize_terminal=false
|
||||||
|
else
|
||||||
|
colorize_terminal=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$level" in
|
||||||
|
w)
|
||||||
|
if [ "$colorize_terminal" = true ]; then
|
||||||
|
# Warning (yellow) for terminal
|
||||||
|
colored_message="\e[33m[WARN] $message\e[0m"
|
||||||
|
else
|
||||||
|
# Warning (no color for sh) for terminal
|
||||||
|
colored_message="$timestamp [WARN] $message"
|
||||||
|
fi
|
||||||
|
# Write to log file without colorization
|
||||||
|
log_message="$timestamp [WARN] $message"
|
||||||
|
;;
|
||||||
|
e)
|
||||||
|
if [ "$colorize_terminal" = true ]; then
|
||||||
|
# Error (red) for terminal
|
||||||
|
colored_message="\e[31m[ERROR] $message\e[0m"
|
||||||
|
else
|
||||||
|
# Error (no color for sh) for terminal
|
||||||
|
colored_message="$timestamp [ERROR] $message"
|
||||||
|
fi
|
||||||
|
# Write to log file without colorization
|
||||||
|
log_message="$timestamp [ERROR] $message"
|
||||||
|
;;
|
||||||
|
i)
|
||||||
|
# Write to log file without colorization for info message
|
||||||
|
log_message="$timestamp [INFO] $message"
|
||||||
|
colored_message=$log_message
|
||||||
|
;;
|
||||||
|
d)
|
||||||
|
if [ "$colorize_terminal" = true ]; then
|
||||||
|
# Debug (green) for terminal
|
||||||
|
colored_message="\e[32m[DEBUG] $message\e[0m"
|
||||||
|
else
|
||||||
|
# Debug (no color for sh) for terminal
|
||||||
|
colored_message="$timestamp [DEBUG] $message"
|
||||||
|
fi
|
||||||
|
# Write to log file without colorization
|
||||||
|
log_message="$timestamp [DEBUG] $message"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# Default (no color for other shells) for terminal
|
||||||
|
colored_message="$timestamp $message"
|
||||||
|
# Write to log file without colorization
|
||||||
|
log_message="$timestamp $message"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Display the message in the terminal
|
||||||
|
echo -e "$colored_message"
|
||||||
|
|
||||||
|
# Write the log message to the log file
|
||||||
|
if [ ! -f "$logfile" ]; then
|
||||||
|
echo "$timestamp [WARN] Log file not found in \"$logfile\", creating it"
|
||||||
|
touch "$logfile"
|
||||||
|
fi
|
||||||
|
echo "$log_message" >> "$logfile"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# This function is merging the temporary log file into the actual one
|
||||||
|
tmplog_merger() {
|
||||||
|
|
||||||
|
create_dir "$logs_folder"
|
||||||
|
|
||||||
|
# Check if /tmp/retrodeck.log exists
|
||||||
|
if [ -e "/tmp/retrodeck.log" ] && [ -e "$logs_folder/retrodeck.log" ]; then
|
||||||
|
|
||||||
|
# Sort both temporary and existing log files by timestamp
|
||||||
|
sort -k1,1n -k2,2M -k3,3n -k4,4n -k5,5n "/tmp/retrodeck.log" "$logs_folder/retrodeck.log" > "$logs_folder/merged_logs.tmp"
|
||||||
|
|
||||||
|
# Move the merged logs to replace the original log file
|
||||||
|
mv "$logs_folder/merged_logs.tmp" "$logs_folder/retrodeck.log"
|
||||||
|
|
||||||
|
# Remove the temporary file
|
||||||
|
rm "/tmp/retrodeck.log"
|
||||||
|
fi
|
||||||
|
|
||||||
|
local ESDE_source_logs="/var/config/ES-DE/logs/es_log.txt"
|
||||||
|
# Check if the source file exists
|
||||||
|
if [ -e "$ESDE_source_logs" ]; then
|
||||||
|
# Create the symlink in the logs folder
|
||||||
|
ln -sf "$ESDE_source_logs" "$logs_folder/ES-DE.log"
|
||||||
|
log i "ES-DE log file linked to \"$logs_folder/ES-DE.log\""
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
|
@ -43,7 +43,7 @@ multi_user_enable_multi_user_mode() {
|
||||||
if [[ -d "$multi_user_data_folder" && $(ls -1 "$multi_user_data_folder" | wc -l) -gt 0 ]]; then # If multi-user data folder exists from prior use and is not empty
|
if [[ -d "$multi_user_data_folder" && $(ls -1 "$multi_user_data_folder" | wc -l) -gt 0 ]]; then # If multi-user data folder exists from prior use and is not empty
|
||||||
if [[ -d "$multi_user_data_folder/$SteamAppUser" ]]; then # Current user has an existing save folder
|
if [[ -d "$multi_user_data_folder/$SteamAppUser" ]]; then # Current user has an existing save folder
|
||||||
configurator_generic_dialog "RetroDECK Multi-User Mode" "The current user $SteamAppUser has an existing folder in the multi-user data folder.\n\nThe saves here are likely older than the ones currently used by RetroDECK.\n\nThe old saves will be backed up to $backups_folder and the current saves will be loaded into the multi-user data folder."
|
configurator_generic_dialog "RetroDECK Multi-User Mode" "The current user $SteamAppUser has an existing folder in the multi-user data folder.\n\nThe saves here are likely older than the ones currently used by RetroDECK.\n\nThe old saves will be backed up to $backups_folder and the current saves will be loaded into the multi-user data folder."
|
||||||
mkdir -p "$backups_folder"
|
create_dir "$backups_folder"
|
||||||
tar -C "$multi_user_data_folder" -cahf "$backups_folder/multi-user-backup_$SteamAppUser_$(date +"%Y_%m_%d").zip" "$SteamAppUser"
|
tar -C "$multi_user_data_folder" -cahf "$backups_folder/multi-user-backup_$SteamAppUser_$(date +"%Y_%m_%d").zip" "$SteamAppUser"
|
||||||
rm -rf "$multi_user_data_folder/$SteamAppUser" # Remove stale data after backup
|
rm -rf "$multi_user_data_folder/$SteamAppUser" # Remove stale data after backup
|
||||||
fi
|
fi
|
||||||
|
@ -162,18 +162,18 @@ multi_user_return_to_single_user() {
|
||||||
# XEMU one-offs, because it stores its config in /var/data, not /var/config like everything else
|
# XEMU one-offs, because it stores its config in /var/data, not /var/config like everything else
|
||||||
unlink "/var/config/xemu"
|
unlink "/var/config/xemu"
|
||||||
unlink "/var/data/xemu/xemu"
|
unlink "/var/data/xemu/xemu"
|
||||||
mkdir -p "/var/config/xemu"
|
create_dir "/var/config/xemu"
|
||||||
mv -f "$multi_user_data_folder/$single_user/config/xemu"/{.[!.],}* "/var/config/xemu"
|
mv -f "$multi_user_data_folder/$single_user/config/xemu"/{.[!.],}* "/var/config/xemu"
|
||||||
dir_prep "/var/config/xemu" "/var/data/xemu/xemu"
|
dir_prep "/var/config/xemu" "/var/data/xemu/xemu"
|
||||||
mkdir -p "$saves_folder"
|
create_dir "$saves_folder"
|
||||||
mkdir -p "$states_folder"
|
create_dir "$states_folder"
|
||||||
mv -f "$multi_user_data_folder/$single_user/saves"/{.[!.],}* "$saves_folder"
|
mv -f "$multi_user_data_folder/$single_user/saves"/{.[!.],}* "$saves_folder"
|
||||||
mv -f "$multi_user_data_folder/$single_user/states"/{.[!.],}* "$states_folder"
|
mv -f "$multi_user_data_folder/$single_user/states"/{.[!.],}* "$states_folder"
|
||||||
for emu_conf in $(find "$multi_user_data_folder/$single_user/config" -mindepth 1 -maxdepth 1 -type d -printf '%f\n')
|
for emu_conf in $(find "$multi_user_data_folder/$single_user/config" -mindepth 1 -maxdepth 1 -type d -printf '%f\n')
|
||||||
do
|
do
|
||||||
if [[ ! -z $(grep "^$emu_conf$" "$multi_user_emulator_config_dirs") ]]; then
|
if [[ ! -z $(grep "^$emu_conf$" "$multi_user_emulator_config_dirs") ]]; then
|
||||||
unlink "/var/config/$emu_conf"
|
unlink "/var/config/$emu_conf"
|
||||||
mkdir -p "/var/config/$emu_conf"
|
create_dir "/var/config/$emu_conf"
|
||||||
mv -f "$multi_user_data_folder/$single_user/config/$emu_conf"/{.[!.],}* "/var/config/$emu_conf"
|
mv -f "$multi_user_data_folder/$single_user/config/$emu_conf"/{.[!.],}* "/var/config/$emu_conf"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
@ -187,11 +187,11 @@ multi_user_setup_new_user() {
|
||||||
unlink "$states_folder"
|
unlink "$states_folder"
|
||||||
dir_prep "$multi_user_data_folder/$SteamAppUser/saves" "$saves_folder"
|
dir_prep "$multi_user_data_folder/$SteamAppUser/saves" "$saves_folder"
|
||||||
dir_prep "$multi_user_data_folder/$SteamAppUser/states" "$states_folder"
|
dir_prep "$multi_user_data_folder/$SteamAppUser/states" "$states_folder"
|
||||||
mkdir -p "$multi_user_data_folder/$SteamAppUser/config/retrodeck"
|
create_dir "$multi_user_data_folder/$SteamAppUser/config/retrodeck"
|
||||||
cp -L "$rd_conf" "$multi_user_data_folder/$SteamAppUser/config/retrodeck/retrodeck.cfg" # Copy existing rd_conf file for new user.
|
cp -L "$rd_conf" "$multi_user_data_folder/$SteamAppUser/config/retrodeck/retrodeck.cfg" # Copy existing rd_conf file for new user.
|
||||||
rm -f "$rd_conf"
|
rm -f "$rd_conf"
|
||||||
ln -sfT "$multi_user_data_folder/$SteamAppUser/config/retrodeck/retrodeck.cfg" "$rd_conf"
|
ln -sfT "$multi_user_data_folder/$SteamAppUser/config/retrodeck/retrodeck.cfg" "$rd_conf"
|
||||||
mkdir -p "$multi_user_data_folder/$SteamAppUser/config/retroarch"
|
create_dir "$multi_user_data_folder/$SteamAppUser/config/retroarch"
|
||||||
if [[ ! -L "/var/config/retroarch/retroarch.cfg" ]]; then
|
if [[ ! -L "/var/config/retroarch/retroarch.cfg" ]]; then
|
||||||
mv "/var/config/retroarch/retroarch.cfg" "$multi_user_data_folder/$SteamAppUser/config/retroarch/retroarch.cfg"
|
mv "/var/config/retroarch/retroarch.cfg" "$multi_user_data_folder/$SteamAppUser/config/retroarch/retroarch.cfg"
|
||||||
mv "/var/config/retroarch/retroarch-core-options.cfg" "$multi_user_data_folder/$SteamAppUser/config/retroarch/retroarch-core-options.cfg"
|
mv "/var/config/retroarch/retroarch-core-options.cfg" "$multi_user_data_folder/$SteamAppUser/config/retroarch/retroarch-core-options.cfg"
|
||||||
|
|
|
@ -104,9 +104,9 @@ post_update() {
|
||||||
deploy_single_patch "$emuconfigs/duckstation/settings.ini" "/var/config/duckstation/duckstation-cheevos-upgrade.patch" "$duckstationconf"
|
deploy_single_patch "$emuconfigs/duckstation/settings.ini" "/var/config/duckstation/duckstation-cheevos-upgrade.patch" "$duckstationconf"
|
||||||
rm -f "/var/config/duckstation/duckstation-cheevos-upgrade.patch"
|
rm -f "/var/config/duckstation/duckstation-cheevos-upgrade.patch"
|
||||||
|
|
||||||
mkdir -p "$mods_folder"
|
create_dir "$mods_folder"
|
||||||
mkdir -p "$texture_packs_folder"
|
create_dir "$texture_packs_folder"
|
||||||
mkdir -p "$borders_folder"
|
create_dir "$borders_folder"
|
||||||
|
|
||||||
dir_prep "$mods_folder/Primehack" "/var/data/primehack/Load/GraphicMods"
|
dir_prep "$mods_folder/Primehack" "/var/data/primehack/Load/GraphicMods"
|
||||||
dir_prep "$texture_packs_folder/Primehack" "/var/data/primehack/Load/Textures"
|
dir_prep "$texture_packs_folder/Primehack" "/var/data/primehack/Load/Textures"
|
||||||
|
@ -142,13 +142,13 @@ post_update() {
|
||||||
rm "$roms_folder/ps3/emudir"
|
rm "$roms_folder/ps3/emudir"
|
||||||
configurator_generic_dialog "RetroDECK 0.7.0b Upgrade" "As part of this update and due to a RPCS3 config upgrade, the files that used to exist at\n\n~/retrodeck/roms/ps3/emudir\n\nare now located at\n\n~/retrodeck/bios/rpcs3.\nYour existing files have been moved automatically."
|
configurator_generic_dialog "RetroDECK 0.7.0b Upgrade" "As part of this update and due to a RPCS3 config upgrade, the files that used to exist at\n\n~/retrodeck/roms/ps3/emudir\n\nare now located at\n\n~/retrodeck/bios/rpcs3.\nYour existing files have been moved automatically."
|
||||||
fi
|
fi
|
||||||
mkdir -p "$bios_folder/rpcs3/dev_hdd0"
|
create_dir "$bios_folder/rpcs3/dev_hdd0"
|
||||||
mkdir -p "$bios_folder/rpcs3/dev_hdd1"
|
create_dir "$bios_folder/rpcs3/dev_hdd1"
|
||||||
mkdir -p "$bios_folder/rpcs3/dev_flash"
|
create_dir "$bios_folder/rpcs3/dev_flash"
|
||||||
mkdir -p "$bios_folder/rpcs3/dev_flash2"
|
create_dir "$bios_folder/rpcs3/dev_flash2"
|
||||||
mkdir -p "$bios_folder/rpcs3/dev_flash3"
|
create_dir "$bios_folder/rpcs3/dev_flash3"
|
||||||
mkdir -p "$bios_folder/rpcs3/dev_bdvd"
|
create_dir "$bios_folder/rpcs3/dev_bdvd"
|
||||||
mkdir -p "$bios_folder/rpcs3/dev_usb000"
|
create_dir "$bios_folder/rpcs3/dev_usb000"
|
||||||
dir_prep "$bios_folder/rpcs3/dev_hdd0/home/00000001/savedata" "$saves_folder/ps3/rpcs3"
|
dir_prep "$bios_folder/rpcs3/dev_hdd0/home/00000001/savedata" "$saves_folder/ps3/rpcs3"
|
||||||
|
|
||||||
set_setting_value $es_settings "ApplicationUpdaterFrequency" "never" "es_settings"
|
set_setting_value $es_settings "ApplicationUpdaterFrequency" "never" "es_settings"
|
||||||
|
@ -156,7 +156,7 @@ post_update() {
|
||||||
if [[ -f "$saves_folder/duckstation/shared_card_1.mcd" || -f "$saves_folder/duckstation/shared_card_2.mcd" ]]; then
|
if [[ -f "$saves_folder/duckstation/shared_card_1.mcd" || -f "$saves_folder/duckstation/shared_card_2.mcd" ]]; then
|
||||||
configurator_generic_dialog "RetroDECK 0.7.0b Upgrade" "As part of this update, the location of saves and states for Duckstation has been changed.\n\nYour files will be moved automatically, and can now be found at\n\n~.../saves/psx/duckstation/memcards/\nand\n~.../states/psx/duckstation/"
|
configurator_generic_dialog "RetroDECK 0.7.0b Upgrade" "As part of this update, the location of saves and states for Duckstation has been changed.\n\nYour files will be moved automatically, and can now be found at\n\n~.../saves/psx/duckstation/memcards/\nand\n~.../states/psx/duckstation/"
|
||||||
fi
|
fi
|
||||||
mkdir -p "$saves_folder/psx/duckstation/memcards"
|
create_dir "$saves_folder/psx/duckstation/memcards"
|
||||||
mv "$saves_folder/duckstation/"* "$saves_folder/psx/duckstation/memcards/"
|
mv "$saves_folder/duckstation/"* "$saves_folder/psx/duckstation/memcards/"
|
||||||
rmdir "$saves_folder/duckstation" # File-safe folder cleanup
|
rmdir "$saves_folder/duckstation" # File-safe folder cleanup
|
||||||
unlink "/var/config/duckstation/memcards"
|
unlink "/var/config/duckstation/memcards"
|
||||||
|
@ -164,7 +164,7 @@ post_update() {
|
||||||
set_setting_value "$duckstationconf" "Card2Path" "$saves_folder/psx/duckstation/memcards/shared_card_2.mcd" "duckstation" "MemoryCards"
|
set_setting_value "$duckstationconf" "Card2Path" "$saves_folder/psx/duckstation/memcards/shared_card_2.mcd" "duckstation" "MemoryCards"
|
||||||
set_setting_value "$duckstationconf" "Directory" "$saves_folder/psx/duckstation/memcards" "duckstation" "MemoryCards"
|
set_setting_value "$duckstationconf" "Directory" "$saves_folder/psx/duckstation/memcards" "duckstation" "MemoryCards"
|
||||||
set_setting_value "$duckstationconf" "RecursivePaths" "$roms_folder/psx" "duckstation" "GameList"
|
set_setting_value "$duckstationconf" "RecursivePaths" "$roms_folder/psx" "duckstation" "GameList"
|
||||||
mkdir -p "$states_folder/psx"
|
create_dir "$states_folder/psx"
|
||||||
mv -t "$states_folder/psx/" "$states_folder/duckstation"
|
mv -t "$states_folder/psx/" "$states_folder/duckstation"
|
||||||
unlink "/var/config/duckstation/savestates"
|
unlink "/var/config/duckstation/savestates"
|
||||||
dir_prep "$states_folder/psx/duckstation" "/var/config/duckstation/savestates"
|
dir_prep "$states_folder/psx/duckstation" "/var/config/duckstation/savestates"
|
||||||
|
|
|
@ -20,10 +20,10 @@ prepare_component() {
|
||||||
if [[ ! $current_setting_name =~ (rdhome|sdcard) ]]; then # Ignore these locations
|
if [[ ! $current_setting_name =~ (rdhome|sdcard) ]]; then # Ignore these locations
|
||||||
local current_setting_value=$(get_setting_value "$rd_conf" "$current_setting_name" "retrodeck" "paths")
|
local current_setting_value=$(get_setting_value "$rd_conf" "$current_setting_name" "retrodeck" "paths")
|
||||||
declare -g "$current_setting_name=$rdhome/$(basename $current_setting_value)"
|
declare -g "$current_setting_name=$rdhome/$(basename $current_setting_value)"
|
||||||
mkdir -p "$rdhome/$(basename $current_setting_value)"
|
create_dir "$rdhome/$(basename $current_setting_value)"
|
||||||
fi
|
fi
|
||||||
done < <(grep -v '^\s*$' $rd_conf | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f')
|
done < <(grep -v '^\s*$' $rd_conf | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f')
|
||||||
mkdir -p "/var/config/retrodeck/godot"
|
create_dir "/var/config/retrodeck/godot"
|
||||||
fi
|
fi
|
||||||
if [[ "$action" == "postmove" ]]; then # Update the paths of any folders that came with the retrodeck folder during a move
|
if [[ "$action" == "postmove" ]]; then # Update the paths of any folders that came with the retrodeck folder during a move
|
||||||
while read -r config_line; do
|
while read -r config_line; do
|
||||||
|
@ -41,7 +41,7 @@ prepare_component() {
|
||||||
if [[ "$component" =~ ^(es-de|ES-DE|all)$ ]]; then # For use after ESDE-related folders are moved or a reset
|
if [[ "$component" =~ ^(es-de|ES-DE|all)$ ]]; then # For use after ESDE-related folders are moved or a reset
|
||||||
if [[ "$action" == "reset" ]]; then
|
if [[ "$action" == "reset" ]]; then
|
||||||
rm -rf /var/config/ES-DE
|
rm -rf /var/config/ES-DE
|
||||||
mkdir -p /var/config/ES-DE/settings
|
create_dir /var/config/ES-DE/settings
|
||||||
cp -f /app/retrodeck/es_settings.xml /var/config/ES-DE/settings/es_settings.xml
|
cp -f /app/retrodeck/es_settings.xml /var/config/ES-DE/settings/es_settings.xml
|
||||||
set_setting_value "$es_settings" "ROMDirectory" "$roms_folder" "es_settings"
|
set_setting_value "$es_settings" "ROMDirectory" "$roms_folder" "es_settings"
|
||||||
set_setting_value "$es_settings" "MediaDirectory" "$media_folder" "es_settings"
|
set_setting_value "$es_settings" "MediaDirectory" "$media_folder" "es_settings"
|
||||||
|
@ -61,16 +61,14 @@ prepare_component() {
|
||||||
if [[ "$component" =~ ^(retroarch|RetroArch|all)$ ]]; then
|
if [[ "$component" =~ ^(retroarch|RetroArch|all)$ ]]; then
|
||||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||||
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
||||||
rm -rf "$multi_user_data_folder/$SteamAppUser/config/retroarch"
|
create_dir -d "$multi_user_data_folder/$SteamAppUser/config/retroarch"
|
||||||
mkdir -p "$multi_user_data_folder/$SteamAppUser/config/retroarch"
|
|
||||||
cp -fv $emuconfigs/retroarch/retroarch.cfg "$multi_user_data_folder/$SteamAppUser/config/retroarch/"
|
cp -fv $emuconfigs/retroarch/retroarch.cfg "$multi_user_data_folder/$SteamAppUser/config/retroarch/"
|
||||||
cp -fv $emuconfigs/retroarch/retroarch-core-options.cfg "$multi_user_data_folder/$SteamAppUser/config/retroarch/"
|
cp -fv $emuconfigs/retroarch/retroarch-core-options.cfg "$multi_user_data_folder/$SteamAppUser/config/retroarch/"
|
||||||
else # Single-user actions
|
else # Single-user actions
|
||||||
rm -rf /var/config/retroarch
|
create_dir -d /var/config/retroarch
|
||||||
mkdir -p /var/config/retroarch
|
|
||||||
dir_prep "$bios_folder" "/var/config/retroarch/system"
|
dir_prep "$bios_folder" "/var/config/retroarch/system"
|
||||||
dir_prep "$logs_folder/retroarch" "/var/config/retroarch/logs"
|
dir_prep "$logs_folder/retroarch" "/var/config/retroarch/logs"
|
||||||
mkdir -pv /var/config/retroarch/shaders/
|
create_dir /var/config/retroarch/shaders/
|
||||||
cp -rf /app/share/libretro/shaders /var/config/retroarch/
|
cp -rf /app/share/libretro/shaders /var/config/retroarch/
|
||||||
dir_prep "$rdhome/shaders/retroarch" "/var/config/retroarch/shaders"
|
dir_prep "$rdhome/shaders/retroarch" "/var/config/retroarch/shaders"
|
||||||
rsync -rlD --mkpath "/app/share/libretro/cores/" "/var/config/retroarch/cores/"
|
rsync -rlD --mkpath "/app/share/libretro/cores/" "/var/config/retroarch/cores/"
|
||||||
|
@ -88,9 +86,9 @@ prepare_component() {
|
||||||
# Shared actions
|
# Shared actions
|
||||||
|
|
||||||
# PPSSPP
|
# PPSSPP
|
||||||
echo "--------------------------------"
|
log i "--------------------------------"
|
||||||
echo "Initializing PPSSPP_LIBRETRO"
|
log i "Initializing PPSSPP_LIBRETRO"
|
||||||
echo "--------------------------------"
|
log i "--------------------------------"
|
||||||
if [ -d $bios_folder/PPSSPP/flash0/font ]
|
if [ -d $bios_folder/PPSSPP/flash0/font ]
|
||||||
then
|
then
|
||||||
mv -fv $bios_folder/PPSSPP/flash0/font $bios_folder/PPSSPP/flash0/font.bak
|
mv -fv $bios_folder/PPSSPP/flash0/font $bios_folder/PPSSPP/flash0/font.bak
|
||||||
|
@ -102,16 +100,16 @@ prepare_component() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# MSX / SVI / ColecoVision / SG-1000
|
# MSX / SVI / ColecoVision / SG-1000
|
||||||
echo "-----------------------------------------------------------"
|
log i "-----------------------------------------------------------"
|
||||||
echo "Initializing MSX / SVI / ColecoVision / SG-1000 LIBRETRO"
|
log i "Initializing MSX / SVI / ColecoVision / SG-1000 LIBRETRO"
|
||||||
echo "-----------------------------------------------------------"
|
log i "-----------------------------------------------------------"
|
||||||
cp -rf "/app/retrodeck/extras/MSX/Databases" "$bios_folder/Databases"
|
cp -rf "/app/retrodeck/extras/MSX/Databases" "$bios_folder/Databases"
|
||||||
cp -rf "/app/retrodeck/extras/MSX/Machines" "$bios_folder/Machines"
|
cp -rf "/app/retrodeck/extras/MSX/Machines" "$bios_folder/Machines"
|
||||||
|
|
||||||
# AMIGA
|
# AMIGA
|
||||||
echo "-----------------------------------------------------------"
|
log i "-----------------------------------------------------------"
|
||||||
echo "Initializing AMIGA LIBRETRO"
|
log i "Initializing AMIGA LIBRETRO"
|
||||||
echo "-----------------------------------------------------------"
|
log i "-----------------------------------------------------------"
|
||||||
cp -f "/app/retrodeck/extras/Amiga/capsimg.so" "$bios_folder/capsimg.so"
|
cp -f "/app/retrodeck/extras/Amiga/capsimg.so" "$bios_folder/capsimg.so"
|
||||||
|
|
||||||
dir_prep "$texture_packs_folder/RetroArch-Mesen" "/var/config/retroarch/system/HdPacks"
|
dir_prep "$texture_packs_folder/RetroArch-Mesen" "/var/config/retroarch/system/HdPacks"
|
||||||
|
@ -157,19 +155,17 @@ prepare_component() {
|
||||||
|
|
||||||
if [[ "$component" =~ ^(cemu|Cemu|all)$ ]]; then
|
if [[ "$component" =~ ^(cemu|Cemu|all)$ ]]; then
|
||||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||||
echo "----------------------"
|
log i "----------------------"
|
||||||
echo "Initializing CEMU"
|
log i "Initializing CEMU"
|
||||||
echo "----------------------"
|
log i "----------------------"
|
||||||
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
||||||
rm -rf "$multi_user_data_folder/$SteamAppUser/config/Cemu"
|
create_dir -d "$multi_user_data_folder/$SteamAppUser/config/Cemu"
|
||||||
mkdir -p "$multi_user_data_folder/$SteamAppUser/config/Cemu"
|
|
||||||
cp -fr "$emuconfigs/cemu/"* "$multi_user_data_folder/$SteamAppUser/config/Cemu/"
|
cp -fr "$emuconfigs/cemu/"* "$multi_user_data_folder/$SteamAppUser/config/Cemu/"
|
||||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/Cemu/settings.ini" "mlc_path" "$bios_folder/cemu" "cemu"
|
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/Cemu/settings.ini" "mlc_path" "$bios_folder/cemu" "cemu"
|
||||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/Cemu/settings.ini" "Entry" "$roms_folder/wiiu" "cemu" "GamePaths"
|
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/Cemu/settings.ini" "Entry" "$roms_folder/wiiu" "cemu" "GamePaths"
|
||||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/Cemu" "/var/config/Cemu"
|
dir_prep "$multi_user_data_folder/$SteamAppUser/config/Cemu" "/var/config/Cemu"
|
||||||
else
|
else
|
||||||
rm -rf /var/config/Cemu
|
create_dir -d /var/config/Cemu/
|
||||||
mkdir -pv /var/config/Cemu/
|
|
||||||
cp -fr "$emuconfigs/cemu/"* /var/config/Cemu/
|
cp -fr "$emuconfigs/cemu/"* /var/config/Cemu/
|
||||||
set_setting_value "$cemuconf" "mlc_path" "$bios_folder/cemu" "cemu"
|
set_setting_value "$cemuconf" "mlc_path" "$bios_folder/cemu" "cemu"
|
||||||
set_setting_value "$cemuconf" "Entry" "$roms_folder/wiiu" "cemu" "GamePaths"
|
set_setting_value "$cemuconf" "Entry" "$roms_folder/wiiu" "cemu" "GamePaths"
|
||||||
|
@ -186,12 +182,11 @@ prepare_component() {
|
||||||
|
|
||||||
if [[ "$component" =~ ^(citra|citra-emu|Citra|all)$ ]]; then
|
if [[ "$component" =~ ^(citra|citra-emu|Citra|all)$ ]]; then
|
||||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||||
echo "------------------------"
|
log i "------------------------"
|
||||||
echo "Initializing CITRA"
|
log i "Initializing CITRA"
|
||||||
echo "------------------------"
|
log i "------------------------"
|
||||||
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
||||||
rm -rf "$multi_user_data_folder/$SteamAppUser/config/citra-emu"
|
create_dir -d "$multi_user_data_folder/$SteamAppUser/config/citra-emu"
|
||||||
mkdir -p "$multi_user_data_folder/$SteamAppUser/config/citra-emu"
|
|
||||||
cp -fv $emuconfigs/citra/qt-config.ini "$multi_user_data_folder/$SteamAppUser/config/citra-emu/qt-config.ini"
|
cp -fv $emuconfigs/citra/qt-config.ini "$multi_user_data_folder/$SteamAppUser/config/citra-emu/qt-config.ini"
|
||||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/citra-emu/qt-config.ini" "nand_directory" "$saves_folder/n3ds/citra/nand/" "citra" "Data%20Storage"
|
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/citra-emu/qt-config.ini" "nand_directory" "$saves_folder/n3ds/citra/nand/" "citra" "Data%20Storage"
|
||||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/citra-emu/qt-config.ini" "sdmc_directory" "$saves_folder/n3ds/citra/sdmc/" "citra" "Data%20Storage"
|
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/citra-emu/qt-config.ini" "sdmc_directory" "$saves_folder/n3ds/citra/sdmc/" "citra" "Data%20Storage"
|
||||||
|
@ -199,8 +194,7 @@ prepare_component() {
|
||||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/citra-emu/qt-config.ini" "Paths\screenshotPath" "$screenshots_folder" "citra" "UI"
|
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/citra-emu/qt-config.ini" "Paths\screenshotPath" "$screenshots_folder" "citra" "UI"
|
||||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/citra-emu" "/var/config/citra-emu"
|
dir_prep "$multi_user_data_folder/$SteamAppUser/config/citra-emu" "/var/config/citra-emu"
|
||||||
else # Single-user actions
|
else # Single-user actions
|
||||||
rm -rf /var/config/citra-emu
|
create_dir -d /var/config/citra-emu/
|
||||||
mkdir -pv /var/config/citra-emu/
|
|
||||||
cp -f $emuconfigs/citra/qt-config.ini /var/config/citra-emu/qt-config.ini
|
cp -f $emuconfigs/citra/qt-config.ini /var/config/citra-emu/qt-config.ini
|
||||||
set_setting_value "$citraconf" "nand_directory" "$saves_folder/n3ds/citra/nand/" "citra" "Data%20Storage"
|
set_setting_value "$citraconf" "nand_directory" "$saves_folder/n3ds/citra/nand/" "citra" "Data%20Storage"
|
||||||
set_setting_value "$citraconf" "sdmc_directory" "$saves_folder/n3ds/citra/sdmc/" "citra" "Data%20Storage"
|
set_setting_value "$citraconf" "sdmc_directory" "$saves_folder/n3ds/citra/sdmc/" "citra" "Data%20Storage"
|
||||||
|
@ -208,8 +202,8 @@ prepare_component() {
|
||||||
set_setting_value "$citraconf" "Paths\screenshotPath" "$screenshots_folder" "citra" "UI"
|
set_setting_value "$citraconf" "Paths\screenshotPath" "$screenshots_folder" "citra" "UI"
|
||||||
fi
|
fi
|
||||||
# Shared actions
|
# Shared actions
|
||||||
mkdir -pv "$saves_folder/n3ds/citra/nand/"
|
create_dir "$saves_folder/n3ds/citra/nand/"
|
||||||
mkdir -pv "$saves_folder/n3ds/citra/sdmc/"
|
create_dir "$saves_folder/n3ds/citra/sdmc/"
|
||||||
dir_prep "$bios_folder/citra/sysdata" "/var/data/citra-emu/sysdata"
|
dir_prep "$bios_folder/citra/sysdata" "/var/data/citra-emu/sysdata"
|
||||||
dir_prep "$logs_folder/citra" "/var/data/citra-emu/log"
|
dir_prep "$logs_folder/citra" "/var/data/citra-emu/log"
|
||||||
dir_prep "$mods_folder/Citra" "/var/data/citra-emu/load/mods"
|
dir_prep "$mods_folder/Citra" "/var/data/citra-emu/load/mods"
|
||||||
|
@ -233,12 +227,11 @@ prepare_component() {
|
||||||
|
|
||||||
if [[ "$component" =~ ^(dolphin|dolphin-emu|Dolphin|all)$ ]]; then
|
if [[ "$component" =~ ^(dolphin|dolphin-emu|Dolphin|all)$ ]]; then
|
||||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||||
echo "----------------------"
|
log i "----------------------"
|
||||||
echo "Initializing DOLPHIN"
|
log i "Initializing DOLPHIN"
|
||||||
echo "----------------------"
|
log i "----------------------"
|
||||||
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
||||||
rm -rf "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu"
|
create_dir -d "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu"
|
||||||
mkdir -p "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu"
|
|
||||||
cp -fvr "$emuconfigs/dolphin/"* "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu/"
|
cp -fvr "$emuconfigs/dolphin/"* "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu/"
|
||||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu/Dolphin.ini" "BIOS" "$bios_folder" "dolphin" "GBA"
|
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu/Dolphin.ini" "BIOS" "$bios_folder" "dolphin" "GBA"
|
||||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu/Dolphin.ini" "SavesPath" "$saves_folder/gba" "dolphin" "GBA"
|
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu/Dolphin.ini" "SavesPath" "$saves_folder/gba" "dolphin" "GBA"
|
||||||
|
@ -247,8 +240,7 @@ prepare_component() {
|
||||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu/Dolphin.ini" "WiiSDCardPath" "$saves_folder/wii/dolphin/sd.raw" "dolphin" "General"
|
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu/Dolphin.ini" "WiiSDCardPath" "$saves_folder/wii/dolphin/sd.raw" "dolphin" "General"
|
||||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu" "/var/config/dolphin-emu"
|
dir_prep "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu" "/var/config/dolphin-emu"
|
||||||
else # Single-user actions
|
else # Single-user actions
|
||||||
rm -rf /var/config/dolphin-emu
|
create_dir -d /var/config/dolphin-emu/
|
||||||
mkdir -pv /var/config/dolphin-emu/
|
|
||||||
cp -fvr "$emuconfigs/dolphin/"* /var/config/dolphin-emu/
|
cp -fvr "$emuconfigs/dolphin/"* /var/config/dolphin-emu/
|
||||||
set_setting_value "$dolphinconf" "BIOS" "$bios_folder" "dolphin" "GBA"
|
set_setting_value "$dolphinconf" "BIOS" "$bios_folder" "dolphin" "GBA"
|
||||||
set_setting_value "$dolphinconf" "SavesPath" "$saves_folder/gba" "dolphin" "GBA"
|
set_setting_value "$dolphinconf" "SavesPath" "$saves_folder/gba" "dolphin" "GBA"
|
||||||
|
@ -288,12 +280,11 @@ prepare_component() {
|
||||||
|
|
||||||
if [[ "$component" =~ ^(duckstation|Duckstation|all)$ ]]; then
|
if [[ "$component" =~ ^(duckstation|Duckstation|all)$ ]]; then
|
||||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||||
echo "------------------------"
|
log i "------------------------"
|
||||||
echo "Initializing DUCKSTATION"
|
log i "Initializing DUCKSTATION"
|
||||||
echo "------------------------"
|
log i "------------------------"
|
||||||
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
||||||
rm -rf "$multi_user_data_folder/$SteamAppUser/config/duckstation"
|
create_dir -d "$multi_user_data_folder/$SteamAppUser/data/duckstation/"
|
||||||
mkdir -p "$multi_user_data_folder/$SteamAppUser/data/duckstation/"
|
|
||||||
cp -fv "$emuconfigs/duckstation/"* "$multi_user_data_folder/$SteamAppUser/data/duckstation"
|
cp -fv "$emuconfigs/duckstation/"* "$multi_user_data_folder/$SteamAppUser/data/duckstation"
|
||||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/data/duckstation/settings.ini" "SearchDirectory" "$bios_folder" "duckstation" "BIOS"
|
set_setting_value "$multi_user_data_folder/$SteamAppUser/data/duckstation/settings.ini" "SearchDirectory" "$bios_folder" "duckstation" "BIOS"
|
||||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/data/duckstation/settings.ini" "Card1Path" "$saves_folder/psx/duckstation/memcards/shared_card_1.mcd" "duckstation" "MemoryCards"
|
set_setting_value "$multi_user_data_folder/$SteamAppUser/data/duckstation/settings.ini" "Card1Path" "$saves_folder/psx/duckstation/memcards/shared_card_1.mcd" "duckstation" "MemoryCards"
|
||||||
|
@ -302,9 +293,8 @@ prepare_component() {
|
||||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/data/duckstation/settings.ini" "RecursivePaths" "$roms_folder/psx" "duckstation" "GameList"
|
set_setting_value "$multi_user_data_folder/$SteamAppUser/data/duckstation/settings.ini" "RecursivePaths" "$roms_folder/psx" "duckstation" "GameList"
|
||||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/duckstation" "/var/config/duckstation"
|
dir_prep "$multi_user_data_folder/$SteamAppUser/config/duckstation" "/var/config/duckstation"
|
||||||
else # Single-user actions
|
else # Single-user actions
|
||||||
rm -rf "/var/config/duckstation"
|
create_dir -d "/var/config/duckstation/"
|
||||||
mkdir -p "/var/config/duckstation/"
|
create_dir "$saves_folder/psx/duckstation/memcards"
|
||||||
mkdir -p "$saves_folder/psx/duckstation/memcards"
|
|
||||||
cp -fv "$emuconfigs/duckstation/"* /var/config/duckstation
|
cp -fv "$emuconfigs/duckstation/"* /var/config/duckstation
|
||||||
set_setting_value "$duckstationconf" "SearchDirectory" "$bios_folder" "duckstation" "BIOS"
|
set_setting_value "$duckstationconf" "SearchDirectory" "$bios_folder" "duckstation" "BIOS"
|
||||||
set_setting_value "$duckstationconf" "Card1Path" "$saves_folder/psx/duckstation/memcards/shared_card_1.mcd" "duckstation" "MemoryCards"
|
set_setting_value "$duckstationconf" "Card1Path" "$saves_folder/psx/duckstation/memcards/shared_card_1.mcd" "duckstation" "MemoryCards"
|
||||||
|
@ -335,12 +325,11 @@ prepare_component() {
|
||||||
|
|
||||||
if [[ "$component" =~ ^(melonds|melonDS|MelonDS|all)$ ]]; then
|
if [[ "$component" =~ ^(melonds|melonDS|MelonDS|all)$ ]]; then
|
||||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||||
echo "----------------------"
|
log i "----------------------"
|
||||||
echo "Initializing MELONDS"
|
log i "Initializing MELONDS"
|
||||||
echo "----------------------"
|
log i "----------------------"
|
||||||
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
||||||
rm -rf "$multi_user_data_folder/$SteamAppUser/config/melonDS"
|
create_dir -d "$multi_user_data_folder/$SteamAppUser/config/melonDS/"
|
||||||
mkdir -pv "$multi_user_data_folder/$SteamAppUser/config/melonDS/"
|
|
||||||
cp -fvr $emuconfigs/melonds/melonDS.ini "$multi_user_data_folder/$SteamAppUser/config/melonDS/"
|
cp -fvr $emuconfigs/melonds/melonDS.ini "$multi_user_data_folder/$SteamAppUser/config/melonDS/"
|
||||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/melonDS/melonDS.ini" "BIOS9Path" "$bios_folder/bios9.bin" "melonds"
|
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/melonDS/melonDS.ini" "BIOS9Path" "$bios_folder/bios9.bin" "melonds"
|
||||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/melonDS/melonDS.ini" "BIOS7Path" "$bios_folder/bios7.bin" "melonds"
|
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/melonDS/melonDS.ini" "BIOS7Path" "$bios_folder/bios7.bin" "melonds"
|
||||||
|
@ -349,8 +338,7 @@ prepare_component() {
|
||||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/melonDS/melonDS.ini" "SavestatePath" "$states_folder/nds/melonds" "melonds"
|
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/melonDS/melonDS.ini" "SavestatePath" "$states_folder/nds/melonds" "melonds"
|
||||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/melonDS" "/var/config/melonDS"
|
dir_prep "$multi_user_data_folder/$SteamAppUser/config/melonDS" "/var/config/melonDS"
|
||||||
else # Single-user actions
|
else # Single-user actions
|
||||||
rm -rf /var/config/melonDS
|
create_dir -d /var/config/melonDS/
|
||||||
mkdir -pv /var/config/melonDS/
|
|
||||||
cp -fvr $emuconfigs/melonds/melonDS.ini /var/config/melonDS/
|
cp -fvr $emuconfigs/melonds/melonDS.ini /var/config/melonDS/
|
||||||
set_setting_value "$melondsconf" "BIOS9Path" "$bios_folder/bios9.bin" "melonds"
|
set_setting_value "$melondsconf" "BIOS9Path" "$bios_folder/bios9.bin" "melonds"
|
||||||
set_setting_value "$melondsconf" "BIOS7Path" "$bios_folder/bios7.bin" "melonds"
|
set_setting_value "$melondsconf" "BIOS7Path" "$bios_folder/bios7.bin" "melonds"
|
||||||
|
@ -359,8 +347,8 @@ prepare_component() {
|
||||||
set_setting_value "$melondsconf" "SavestatePath" "$states_folder/nds/melonds" "melonds"
|
set_setting_value "$melondsconf" "SavestatePath" "$states_folder/nds/melonds" "melonds"
|
||||||
fi
|
fi
|
||||||
# Shared actions
|
# Shared actions
|
||||||
mkdir -pv "$saves_folder/nds/melonds"
|
create_dir "$saves_folder/nds/melonds"
|
||||||
mkdir -pv "$states_folder/nds/melonds"
|
create_dir "$states_folder/nds/melonds"
|
||||||
dir_prep "$bios_folder" "/var/config/melonDS/bios"
|
dir_prep "$bios_folder" "/var/config/melonDS/bios"
|
||||||
fi
|
fi
|
||||||
if [[ "$action" == "postmove" ]]; then # Run only post-move commands
|
if [[ "$action" == "postmove" ]]; then # Run only post-move commands
|
||||||
|
@ -375,12 +363,11 @@ prepare_component() {
|
||||||
|
|
||||||
if [[ "$component" =~ ^(pcsx2|PCSX2|all)$ ]]; then
|
if [[ "$component" =~ ^(pcsx2|PCSX2|all)$ ]]; then
|
||||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||||
echo "----------------------"
|
log i "----------------------"
|
||||||
echo "Initializing PCSX2"
|
log i "Initializing PCSX2"
|
||||||
echo "----------------------"
|
log i "----------------------"
|
||||||
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
||||||
rm -rf "$multi_user_data_folder/$SteamAppUser/config/PCSX2"
|
create_dir -d "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis"
|
||||||
mkdir -p "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis"
|
|
||||||
cp -fvr "$emuconfigs/PCSX2/"* "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis/"
|
cp -fvr "$emuconfigs/PCSX2/"* "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis/"
|
||||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis/PCSX2.ini" "Bios" "$bios_folder" "pcsx2" "Folders"
|
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis/PCSX2.ini" "Bios" "$bios_folder" "pcsx2" "Folders"
|
||||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis/PCSX2.ini" "Snapshots" "$screenshots_folder" "pcsx2" "Folders"
|
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis/PCSX2.ini" "Snapshots" "$screenshots_folder" "pcsx2" "Folders"
|
||||||
|
@ -389,8 +376,7 @@ prepare_component() {
|
||||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis/PCSX2.ini" "RecursivePaths" "$roms_folder/ps2" "pcsx2" "GameList"
|
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis/PCSX2.ini" "RecursivePaths" "$roms_folder/ps2" "pcsx2" "GameList"
|
||||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/PCSX2" "/var/config/PCSX2"
|
dir_prep "$multi_user_data_folder/$SteamAppUser/config/PCSX2" "/var/config/PCSX2"
|
||||||
else # Single-user actions
|
else # Single-user actions
|
||||||
rm -rf /var/config/PCSX2
|
create_dir -d "/var/config/PCSX2/inis"
|
||||||
mkdir -pv "/var/config/PCSX2/inis"
|
|
||||||
cp -fvr "$emuconfigs/PCSX2/"* /var/config/PCSX2/inis/
|
cp -fvr "$emuconfigs/PCSX2/"* /var/config/PCSX2/inis/
|
||||||
set_setting_value "$pcsx2conf" "Bios" "$bios_folder" "pcsx2" "Folders"
|
set_setting_value "$pcsx2conf" "Bios" "$bios_folder" "pcsx2" "Folders"
|
||||||
set_setting_value "$pcsx2conf" "Snapshots" "$screenshots_folder" "pcsx2" "Folders"
|
set_setting_value "$pcsx2conf" "Snapshots" "$screenshots_folder" "pcsx2" "Folders"
|
||||||
|
@ -399,8 +385,8 @@ prepare_component() {
|
||||||
set_setting_value "$pcsx2conf" "RecursivePaths" "$roms_folder/ps2" "pcsx2" "GameList"
|
set_setting_value "$pcsx2conf" "RecursivePaths" "$roms_folder/ps2" "pcsx2" "GameList"
|
||||||
fi
|
fi
|
||||||
# Shared actions
|
# Shared actions
|
||||||
mkdir -pv "$saves_folder/ps2/pcsx2/memcards"
|
create_dir "$saves_folder/ps2/pcsx2/memcards"
|
||||||
mkdir -pv "$states_folder/ps2/pcsx2"
|
create_dir "$states_folder/ps2/pcsx2"
|
||||||
dir_prep "$texture_packs_folder/PCSX2" "/var/config/PCSX2/textures"
|
dir_prep "$texture_packs_folder/PCSX2" "/var/config/PCSX2/textures"
|
||||||
|
|
||||||
# Reset default preset settings
|
# Reset default preset settings
|
||||||
|
@ -431,18 +417,16 @@ prepare_component() {
|
||||||
|
|
||||||
if [[ "$component" =~ ^(ppsspp|PPSSPP|all)$ ]]; then
|
if [[ "$component" =~ ^(ppsspp|PPSSPP|all)$ ]]; then
|
||||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||||
echo "------------------------"
|
log i "------------------------"
|
||||||
echo "Initializing PPSSPPSDL"
|
log i "Initializing PPSSPPSDL"
|
||||||
echo "------------------------"
|
log i "------------------------"
|
||||||
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
||||||
rm -rf "$multi_user_data_folder/$SteamAppUser/config/ppsspp"
|
create_dir -d "$multi_user_data_folder/$SteamAppUser/config/ppsspp/PSP/SYSTEM/"
|
||||||
mkdir -p "$multi_user_data_folder/$SteamAppUser/config/ppsspp/PSP/SYSTEM/"
|
|
||||||
cp -fv "$emuconfigs/ppssppsdl/"* "$multi_user_data_folder/$SteamAppUser/config/ppsspp/PSP/SYSTEM/"
|
cp -fv "$emuconfigs/ppssppsdl/"* "$multi_user_data_folder/$SteamAppUser/config/ppsspp/PSP/SYSTEM/"
|
||||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/ppsspp/PSP/SYSTEM/ppsspp.ini" "CurrentDirectory" "$roms_folder/psp" "ppsspp" "General"
|
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/ppsspp/PSP/SYSTEM/ppsspp.ini" "CurrentDirectory" "$roms_folder/psp" "ppsspp" "General"
|
||||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/ppsspp" "/var/config/ppsspp"
|
dir_prep "$multi_user_data_folder/$SteamAppUser/config/ppsspp" "/var/config/ppsspp"
|
||||||
else # Single-user actions
|
else # Single-user actions
|
||||||
rm -rf /var/config/ppsspp
|
create_dir -d /var/config/ppsspp/PSP/SYSTEM/
|
||||||
mkdir -p /var/config/ppsspp/PSP/SYSTEM/
|
|
||||||
cp -fv "$emuconfigs/ppssppsdl/"* /var/config/ppsspp/PSP/SYSTEM/
|
cp -fv "$emuconfigs/ppssppsdl/"* /var/config/ppsspp/PSP/SYSTEM/
|
||||||
set_setting_value "$ppssppconf" "CurrentDirectory" "$roms_folder/psp" "ppsspp" "General"
|
set_setting_value "$ppssppconf" "CurrentDirectory" "$roms_folder/psp" "ppsspp" "General"
|
||||||
fi
|
fi
|
||||||
|
@ -461,18 +445,16 @@ prepare_component() {
|
||||||
|
|
||||||
if [[ "$component" =~ ^(primehack|Primehack|all)$ ]]; then
|
if [[ "$component" =~ ^(primehack|Primehack|all)$ ]]; then
|
||||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||||
echo "----------------------"
|
log i "----------------------"
|
||||||
echo "Initializing Primehack"
|
log i "Initializing Primehack"
|
||||||
echo "----------------------"
|
log i "----------------------"
|
||||||
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
||||||
rm -rf "$multi_user_data_folder/$SteamAppUser/config/primehack"
|
create_dir -d "$multi_user_data_folder/$SteamAppUser/config/primehack"
|
||||||
mkdir -p "$multi_user_data_folder/$SteamAppUser/config/primehack"
|
|
||||||
cp -fvr "$emuconfigs/primehack/"* "$multi_user_data_folder/$SteamAppUser/config/primehack/"
|
cp -fvr "$emuconfigs/primehack/"* "$multi_user_data_folder/$SteamAppUser/config/primehack/"
|
||||||
set_setting_value ""$multi_user_data_folder/$SteamAppUser/config/primehack/Dolphin.ini"" "ISOPath0" "$roms_folder/gc" "primehack" "General"
|
set_setting_value ""$multi_user_data_folder/$SteamAppUser/config/primehack/Dolphin.ini"" "ISOPath0" "$roms_folder/gc" "primehack" "General"
|
||||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/primehack" "/var/config/primehack"
|
dir_prep "$multi_user_data_folder/$SteamAppUser/config/primehack" "/var/config/primehack"
|
||||||
else # Single-user actions
|
else # Single-user actions
|
||||||
rm -rf /var/config/primehack
|
create_dir -d /var/config/primehack/
|
||||||
mkdir -pv /var/config/primehack/
|
|
||||||
cp -fvr "$emuconfigs/primehack/"* /var/config/primehack/
|
cp -fvr "$emuconfigs/primehack/"* /var/config/primehack/
|
||||||
set_setting_value "$primehackconf" "ISOPath0" "$roms_folder/gc" "primehack" "General"
|
set_setting_value "$primehackconf" "ISOPath0" "$roms_folder/gc" "primehack" "General"
|
||||||
fi
|
fi
|
||||||
|
@ -482,7 +464,7 @@ prepare_component() {
|
||||||
dir_prep "$saves_folder/gc/primehack/JP" "/var/data/primehack/GC/JAP"
|
dir_prep "$saves_folder/gc/primehack/JP" "/var/data/primehack/GC/JAP"
|
||||||
dir_prep "$screenshots_folder" "/var/data/primehack/ScreenShots"
|
dir_prep "$screenshots_folder" "/var/data/primehack/ScreenShots"
|
||||||
dir_prep "$states_folder/primehack" "/var/data/primehack/StateSaves"
|
dir_prep "$states_folder/primehack" "/var/data/primehack/StateSaves"
|
||||||
mkdir -pv /var/data/primehack/Wii/
|
create_dir /var/data/primehack/Wii/
|
||||||
dir_prep "$saves_folder/wii/primehack" "/var/data/primehack/Wii"
|
dir_prep "$saves_folder/wii/primehack" "/var/data/primehack/Wii"
|
||||||
dir_prep "$mods_folder/Primehack" "/var/data/primehack/Load/GraphicMods"
|
dir_prep "$mods_folder/Primehack" "/var/data/primehack/Load/GraphicMods"
|
||||||
dir_prep "$texture_packs_folder/Primehack" "/var/data/primehack/Load/Textures"
|
dir_prep "$texture_packs_folder/Primehack" "/var/data/primehack/Load/Textures"
|
||||||
|
@ -505,20 +487,18 @@ prepare_component() {
|
||||||
|
|
||||||
if [[ "$component" =~ ^(rpcs3|RPCS3|all)$ ]]; then
|
if [[ "$component" =~ ^(rpcs3|RPCS3|all)$ ]]; then
|
||||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||||
echo "------------------------"
|
log i "------------------------"
|
||||||
echo "Initializing RPCS3"
|
log i "Initializing RPCS3"
|
||||||
echo "------------------------"
|
log i "------------------------"
|
||||||
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
||||||
rm -rf "$multi_user_data_folder/$SteamAppUser/config/rpcs3"
|
create_dir -d "$multi_user_data_folder/$SteamAppUser/config/rpcs3/"
|
||||||
mkdir -pv "$multi_user_data_folder/$SteamAppUser/config/rpcs3/"
|
|
||||||
cp -fr "$emuconfigs/rpcs3/"* "$multi_user_data_folder/$SteamAppUser/config/rpcs3/"
|
cp -fr "$emuconfigs/rpcs3/"* "$multi_user_data_folder/$SteamAppUser/config/rpcs3/"
|
||||||
# This is an unfortunate one-off because set_setting_value does not currently support settings with $ in the name.
|
# This is an unfortunate one-off because set_setting_value does not currently support settings with $ in the name.
|
||||||
sed -i 's^\^$(EmulatorDir): .*^$(EmulatorDir): '"$bios_folder/rpcs3/"'^' "$multi_user_data_folder/$SteamAppUser/config/rpcs3/vfs.yml"
|
sed -i 's^\^$(EmulatorDir): .*^$(EmulatorDir): '"$bios_folder/rpcs3/"'^' "$multi_user_data_folder/$SteamAppUser/config/rpcs3/vfs.yml"
|
||||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/rpcs3/vfs.yml" "/games/" "$roms_folder/ps3/" "rpcs3"
|
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/rpcs3/vfs.yml" "/games/" "$roms_folder/ps3/" "rpcs3"
|
||||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/rpcs3" "/var/config/rpcs3"
|
dir_prep "$multi_user_data_folder/$SteamAppUser/config/rpcs3" "/var/config/rpcs3"
|
||||||
else # Single-user actions
|
else # Single-user actions
|
||||||
rm -rf /var/config/rpcs3
|
create_dir -d /var/config/rpcs3/
|
||||||
mkdir -pv /var/config/rpcs3/
|
|
||||||
cp -fr "$emuconfigs/rpcs3/"* /var/config/rpcs3/
|
cp -fr "$emuconfigs/rpcs3/"* /var/config/rpcs3/
|
||||||
# This is an unfortunate one-off because set_setting_value does not currently support settings with $ in the name.
|
# This is an unfortunate one-off because set_setting_value does not currently support settings with $ in the name.
|
||||||
sed -i 's^\^$(EmulatorDir): .*^$(EmulatorDir): '"$bios_folder/rpcs3/"'^' "$rpcs3vfsconf"
|
sed -i 's^\^$(EmulatorDir): .*^$(EmulatorDir): '"$bios_folder/rpcs3/"'^' "$rpcs3vfsconf"
|
||||||
|
@ -526,13 +506,13 @@ prepare_component() {
|
||||||
dir_prep "$saves_folder/ps3/rpcs3" "$bios_folder/rpcs3/dev_hdd0/home/00000001/savedata"
|
dir_prep "$saves_folder/ps3/rpcs3" "$bios_folder/rpcs3/dev_hdd0/home/00000001/savedata"
|
||||||
fi
|
fi
|
||||||
# Shared actions
|
# Shared actions
|
||||||
mkdir -p "$bios_folder/rpcs3/dev_hdd0"
|
create_dir "$bios_folder/rpcs3/dev_hdd0"
|
||||||
mkdir -p "$bios_folder/rpcs3/dev_hdd1"
|
create_dir "$bios_folder/rpcs3/dev_hdd1"
|
||||||
mkdir -p "$bios_folder/rpcs3/dev_flash"
|
create_dir "$bios_folder/rpcs3/dev_flash"
|
||||||
mkdir -p "$bios_folder/rpcs3/dev_flash2"
|
create_dir "$bios_folder/rpcs3/dev_flash2"
|
||||||
mkdir -p "$bios_folder/rpcs3/dev_flash3"
|
create_dir "$bios_folder/rpcs3/dev_flash3"
|
||||||
mkdir -p "$bios_folder/rpcs3/dev_bdvd"
|
create_dir "$bios_folder/rpcs3/dev_bdvd"
|
||||||
mkdir -p "$bios_folder/rpcs3/dev_usb000"
|
create_dir "$bios_folder/rpcs3/dev_usb000"
|
||||||
fi
|
fi
|
||||||
if [[ "$action" == "postmove" ]]; then # Run only post-move commands
|
if [[ "$action" == "postmove" ]]; then # Run only post-move commands
|
||||||
# This is an unfortunate one-off because set_setting_value does not currently support settings with $ in the name.
|
# This is an unfortunate one-off because set_setting_value does not currently support settings with $ in the name.
|
||||||
|
@ -545,12 +525,12 @@ prepare_component() {
|
||||||
# NOTE: for techincal reasons the system folder of Ryujinx IS NOT a sumlink of the bios/switch/keys as not only the keys are located there
|
# NOTE: for techincal reasons the system folder of Ryujinx IS NOT a sumlink of the bios/switch/keys as not only the keys are located there
|
||||||
# When RetroDECK starts there is a "manage_ryujinx_keys" function that symlinks the keys only in Rryujinx/system.
|
# When RetroDECK starts there is a "manage_ryujinx_keys" function that symlinks the keys only in Rryujinx/system.
|
||||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||||
echo "------------------------"
|
log i "------------------------"
|
||||||
echo "Initializing RYUJINX"
|
log i "Initializing RYUJINX"
|
||||||
echo "------------------------"
|
log i "------------------------"
|
||||||
if [[ $multi_user_mode == "true" ]]; then
|
if [[ $multi_user_mode == "true" ]]; then
|
||||||
rm -rf "$multi_user_data_folder/$SteamAppUser/config/Ryujinx"
|
rm -rf "$multi_user_data_folder/$SteamAppUser/config/Ryujinx"
|
||||||
#mkdir -p "$multi_user_data_folder/$SteamAppUser/config/Ryujinx/system"
|
#create_dir "$multi_user_data_folder/$SteamAppUser/config/Ryujinx/system"
|
||||||
# TODO: add /var/config/Ryujinx/system system folder management
|
# TODO: add /var/config/Ryujinx/system system folder management
|
||||||
cp -fv $emuconfigs/ryujinx/* "$multi_user_data_folder/$SteamAppUser/config/Ryujinx"
|
cp -fv $emuconfigs/ryujinx/* "$multi_user_data_folder/$SteamAppUser/config/Ryujinx"
|
||||||
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' "$multi_user_data_folder/$SteamAppUser/config/Ryujinx/Config.json"
|
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' "$multi_user_data_folder/$SteamAppUser/config/Ryujinx/Config.json"
|
||||||
|
@ -561,7 +541,7 @@ prepare_component() {
|
||||||
else
|
else
|
||||||
# removing config directory to wipe legacy files
|
# removing config directory to wipe legacy files
|
||||||
rm -rf /var/config/Ryujinx
|
rm -rf /var/config/Ryujinx
|
||||||
mkdir -p /var/config/Ryujinx/system
|
create_dir /var/config/Ryujinx/system
|
||||||
cp -fv $emuconfigs/ryujinx/* /var/config/Ryujinx
|
cp -fv $emuconfigs/ryujinx/* /var/config/Ryujinx
|
||||||
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' "$ryujinxconf"
|
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' "$ryujinxconf"
|
||||||
# Linking switch nand/saves folder
|
# Linking switch nand/saves folder
|
||||||
|
@ -581,14 +561,13 @@ prepare_component() {
|
||||||
|
|
||||||
if [[ "$component" =~ ^(xemu|XEMU|all)$ ]]; then
|
if [[ "$component" =~ ^(xemu|XEMU|all)$ ]]; then
|
||||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||||
echo "------------------------"
|
log i "------------------------"
|
||||||
echo "Initializing XEMU"
|
log i "Initializing XEMU"
|
||||||
echo "------------------------"
|
log i "------------------------"
|
||||||
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
||||||
rm -rf /var/config/xemu
|
rm -rf /var/config/xemu
|
||||||
rm -rf /var/data/xemu
|
rm -rf /var/data/xemu
|
||||||
rm -rf "$multi_user_data_folder/$SteamAppUser/config/xemu"
|
create_dir -d "$multi_user_data_folder/$SteamAppUser/config/xemu/"
|
||||||
mkdir -pv "$multi_user_data_folder/$SteamAppUser/config/xemu/"
|
|
||||||
cp -fv $emuconfigs/xemu/xemu.toml "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml"
|
cp -fv $emuconfigs/xemu/xemu.toml "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml"
|
||||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml" "screenshot_dir" "'$screenshots_folder'" "xemu" "General"
|
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml" "screenshot_dir" "'$screenshots_folder'" "xemu" "General"
|
||||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml" "bootrom_path" "'$bios_folder/mcpx_1.0.bin'" "xemu" "sys.files"
|
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml" "bootrom_path" "'$bios_folder/mcpx_1.0.bin'" "xemu" "sys.files"
|
||||||
|
@ -608,7 +587,7 @@ prepare_component() {
|
||||||
set_setting_value "$xemuconf" "eeprom_path" "'$saves_folder/xbox/xemu/xbox-eeprom.bin'" "xemu" "sys.files"
|
set_setting_value "$xemuconf" "eeprom_path" "'$saves_folder/xbox/xemu/xbox-eeprom.bin'" "xemu" "sys.files"
|
||||||
set_setting_value "$xemuconf" "hdd_path" "'$bios_folder/xbox_hdd.qcow2'" "xemu" "sys.files"
|
set_setting_value "$xemuconf" "hdd_path" "'$bios_folder/xbox_hdd.qcow2'" "xemu" "sys.files"
|
||||||
fi # Shared actions
|
fi # Shared actions
|
||||||
mkdir -pv $saves_folder/xbox/xemu/
|
create_dir $saves_folder/xbox/xemu/
|
||||||
# Preparing HD dummy Image if the image is not found
|
# Preparing HD dummy Image if the image is not found
|
||||||
if [ ! -f $bios_folder/xbox_hdd.qcow2 ]
|
if [ ! -f $bios_folder/xbox_hdd.qcow2 ]
|
||||||
then
|
then
|
||||||
|
@ -626,12 +605,11 @@ prepare_component() {
|
||||||
|
|
||||||
if [[ "$component" =~ ^(yuzu|Yuzu|all)$ ]]; then
|
if [[ "$component" =~ ^(yuzu|Yuzu|all)$ ]]; then
|
||||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||||
echo "----------------------"
|
log i "----------------------"
|
||||||
echo "Initializing YUZU"
|
log i "Initializing YUZU"
|
||||||
echo "----------------------"
|
log i "----------------------"
|
||||||
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
||||||
rm -rf "$multi_user_data_folder/$SteamAppUser/config/yuzu"
|
create_dir -d "$multi_user_data_folder/$SteamAppUser/config/yuzu"
|
||||||
mkdir -p "$multi_user_data_folder/$SteamAppUser/config/yuzu"
|
|
||||||
cp -fvr "$emuconfigs/yuzu/"* "$multi_user_data_folder/$SteamAppUser/config/yuzu/"
|
cp -fvr "$emuconfigs/yuzu/"* "$multi_user_data_folder/$SteamAppUser/config/yuzu/"
|
||||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/yuzu/qt-config.ini" "nand_directory" "$saves_folder/switch/yuzu/nand" "yuzu" "Data%20Storage"
|
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/yuzu/qt-config.ini" "nand_directory" "$saves_folder/switch/yuzu/nand" "yuzu" "Data%20Storage"
|
||||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/yuzu/qt-config.ini" "sdmc_directory" "$saves_folder/switch/yuzu/sdmc" "yuzu" "Data%20Storage"
|
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/yuzu/qt-config.ini" "sdmc_directory" "$saves_folder/switch/yuzu/sdmc" "yuzu" "Data%20Storage"
|
||||||
|
@ -639,8 +617,7 @@ prepare_component() {
|
||||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/yuzu/qt-config.ini" "Screenshots\screenshot_path" "$screenshots_folder" "yuzu" "UI"
|
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/yuzu/qt-config.ini" "Screenshots\screenshot_path" "$screenshots_folder" "yuzu" "UI"
|
||||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/yuzu" "/var/config/yuzu"
|
dir_prep "$multi_user_data_folder/$SteamAppUser/config/yuzu" "/var/config/yuzu"
|
||||||
else # Single-user actions
|
else # Single-user actions
|
||||||
rm -rf /var/config/yuzu
|
create_dir -d /var/config/yuzu/
|
||||||
mkdir -pv /var/config/yuzu/
|
|
||||||
cp -fvr "$emuconfigs/yuzu/"* /var/config/yuzu/
|
cp -fvr "$emuconfigs/yuzu/"* /var/config/yuzu/
|
||||||
set_setting_value "$yuzuconf" "nand_directory" "$saves_folder/switch/yuzu/nand" "yuzu" "Data%20Storage"
|
set_setting_value "$yuzuconf" "nand_directory" "$saves_folder/switch/yuzu/nand" "yuzu" "Data%20Storage"
|
||||||
set_setting_value "$yuzuconf" "sdmc_directory" "$saves_folder/switch/yuzu/sdmc" "yuzu" "Data%20Storage"
|
set_setting_value "$yuzuconf" "sdmc_directory" "$saves_folder/switch/yuzu/sdmc" "yuzu" "Data%20Storage"
|
||||||
|
@ -655,7 +632,7 @@ prepare_component() {
|
||||||
dir_prep "$logs_folder/yuzu" "/var/data/yuzu/log"
|
dir_prep "$logs_folder/yuzu" "/var/data/yuzu/log"
|
||||||
dir_prep "$screenshots_folder" "/var/data/yuzu/screenshots"
|
dir_prep "$screenshots_folder" "/var/data/yuzu/screenshots"
|
||||||
dir_prep "$mods_folder/Yuzu" "/var/data/yuzu/load"
|
dir_prep "$mods_folder/Yuzu" "/var/data/yuzu/load"
|
||||||
mkdir -pv "$rdhome/customs/yuzu"
|
create_dir "$rdhome/customs/yuzu"
|
||||||
# removing dead symlinks as they were present in a past version
|
# removing dead symlinks as they were present in a past version
|
||||||
if [ -d $bios_folder/switch ]; then
|
if [ -d $bios_folder/switch ]; then
|
||||||
find $bios_folder/switch -xtype l -exec rm {} \;
|
find $bios_folder/switch -xtype l -exec rm {} \;
|
||||||
|
@ -682,15 +659,15 @@ prepare_component() {
|
||||||
|
|
||||||
if [[ "$component" =~ ^(vita3k|Vita3K|all)$ ]]; then
|
if [[ "$component" =~ ^(vita3k|Vita3K|all)$ ]]; then
|
||||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||||
echo "----------------------"
|
log i "----------------------"
|
||||||
echo "Initializing Vita3K"
|
log i "Initializing Vita3K"
|
||||||
echo "----------------------"
|
log i "----------------------"
|
||||||
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
||||||
echo "Figure out what Vita3k needs for multi-user"
|
log d "Figure out what Vita3k needs for multi-user"
|
||||||
else # Single-user actions
|
else # Single-user actions
|
||||||
# NOTE: the component is writing in "." so it must be placed in the rw filesystem. A symlink of the binary is already placed in /app/bin/Vita3K
|
# NOTE: the component is writing in "." so it must be placed in the rw filesystem. A symlink of the binary is already placed in /app/bin/Vita3K
|
||||||
rm -rf "/var/data/Vita3K"
|
rm -rf "/var/data/Vita3K"
|
||||||
mkdir -p "/var/data/Vita3K/Vita3K"
|
create_dir "/var/data/Vita3K/Vita3K"
|
||||||
cp -fvr "$emuconfigs/vita3k/config.yml" "/var/data/Vita3K" # component config
|
cp -fvr "$emuconfigs/vita3k/config.yml" "/var/data/Vita3K" # component config
|
||||||
cp -fvr "$emuconfigs/vita3k/ux0" "$bios_folder/Vita3K/Vita3K" # User config
|
cp -fvr "$emuconfigs/vita3k/ux0" "$bios_folder/Vita3K/Vita3K" # User config
|
||||||
set_setting_value "$vita3kconf" "pref-path" "$rdhome/bios/Vita3K/Vita3K/" "vita3k"
|
set_setting_value "$vita3kconf" "pref-path" "$rdhome/bios/Vita3K/Vita3K/" "vita3k"
|
||||||
|
@ -706,55 +683,55 @@ prepare_component() {
|
||||||
|
|
||||||
if [[ "$component" =~ ^(mame|MAME|all)$ ]]; then
|
if [[ "$component" =~ ^(mame|MAME|all)$ ]]; then
|
||||||
# TODO: do a proper script
|
# TODO: do a proper script
|
||||||
# This is just a placeholder script to test the component's flow
|
# This is just a placeholder script to test the emulator's flow
|
||||||
echo "----------------------"
|
log i "----------------------"
|
||||||
echo "Initializing MAME"
|
log i "Initializing MAME"
|
||||||
echo "----------------------"
|
log i "----------------------"
|
||||||
|
|
||||||
# TODO: probably some of these needs to be put elsewhere
|
# TODO: probably some of these needs to be put elsewhere
|
||||||
mkdir -p "$saves_folder/mame-sa"
|
create_dir "$saves_folder/mame-sa"
|
||||||
mkdir -p "$saves_folder/mame-sa/nvram"
|
create_dir "$saves_folder/mame-sa/nvram"
|
||||||
mkdir -p "$states_folder/mame-sa"
|
create_dir "$states_folder/mame-sa"
|
||||||
mkdir -p "$rdhome/screenshots/mame-sa"
|
create_dir "$rdhome/screenshots/mame-sa"
|
||||||
mkdir -p "$saves_folder/mame-sa/diff"
|
create_dir "$saves_folder/mame-sa/diff"
|
||||||
|
|
||||||
mkdir -p "/var/config/ctrlr"
|
create_dir "/var/config/ctrlr"
|
||||||
mkdir -p "/var/config/mame/ini"
|
create_dir "/var/config/mame/ini"
|
||||||
mkdir -p "/var/config/mame/cfg"
|
create_dir "/var/config/mame/cfg"
|
||||||
mkdir -p "/var/config/mame/inp"
|
create_dir "/var/config/mame/inp"
|
||||||
|
|
||||||
mkdir -p "/var/data/mame/plugin-data"
|
create_dir "/var/data/mame/plugin-data"
|
||||||
mkdir -p "/var/data/mame/hash"
|
create_dir "/var/data/mame/hash"
|
||||||
mkdir -p "/var/data/mame/assets/samples"
|
create_dir "/var/data/mame/assets/samples"
|
||||||
mkdir -p "/var/data/mame/assets/artwork"
|
create_dir "/var/data/mame/assets/artwork"
|
||||||
mkdir -p "/var/data/mame/assets/fonts"
|
create_dir "/var/data/mame/assets/fonts"
|
||||||
mkdir -p "/var/data/mame/cheat"
|
create_dir "/var/data/mame/cheat"
|
||||||
mkdir -p "/var/data/mame/assets/crosshair"
|
create_dir "/var/data/mame/assets/crosshair"
|
||||||
mkdir -p "/var/data/mame/plugins"
|
create_dir "/var/data/mame/plugins"
|
||||||
mkdir -p "/var/data/mame/assets/language"
|
create_dir "/var/data/mame/assets/language"
|
||||||
mkdir -p "/var/data/mame/assets/software"
|
create_dir "/var/data/mame/assets/software"
|
||||||
mkdir -p "/var/data/mame/assets/comments"
|
create_dir "/var/data/mame/assets/comments"
|
||||||
mkdir -p "/var/data/mame/assets/share"
|
create_dir "/var/data/mame/assets/share"
|
||||||
mkdir -p "/var/data/mame/dats"
|
create_dir "/var/data/mame/dats"
|
||||||
mkdir -p "/var/data/mame/folders"
|
create_dir "/var/data/mame/folders"
|
||||||
mkdir -p "/var/data/mame/assets/cabinets"
|
create_dir "/var/data/mame/assets/cabinets"
|
||||||
mkdir -p "/var/data/mame/assets/cpanel"
|
create_dir "/var/data/mame/assets/cpanel"
|
||||||
mkdir -p "/var/data/mame/assets/pcb"
|
create_dir "/var/data/mame/assets/pcb"
|
||||||
mkdir -p "/var/data/mame/assets/flyers"
|
create_dir "/var/data/mame/assets/flyers"
|
||||||
mkdir -p "/var/data/mame/assets/titles"
|
create_dir "/var/data/mame/assets/titles"
|
||||||
mkdir -p "/var/data/mame/assets/ends"
|
create_dir "/var/data/mame/assets/ends"
|
||||||
mkdir -p "/var/data/mame/assets/marquees"
|
create_dir "/var/data/mame/assets/marquees"
|
||||||
mkdir -p "/var/data/mame/assets/artwork-preview"
|
create_dir "/var/data/mame/assets/artwork-preview"
|
||||||
mkdir -p "/var/data/mame/assets/bosses"
|
create_dir "/var/data/mame/assets/bosses"
|
||||||
mkdir -p "/var/data/mame/assets/logo"
|
create_dir "/var/data/mame/assets/logo"
|
||||||
mkdir -p "/var/data/mame/assets/scores"
|
create_dir "/var/data/mame/assets/scores"
|
||||||
mkdir -p "/var/data/mame/assets/versus"
|
create_dir "/var/data/mame/assets/versus"
|
||||||
mkdir -p "/var/data/mame/assets/gameover"
|
create_dir "/var/data/mame/assets/gameover"
|
||||||
mkdir -p "/var/data/mame/assets/howto"
|
create_dir "/var/data/mame/assets/howto"
|
||||||
mkdir -p "/var/data/mame/assets/select"
|
create_dir "/var/data/mame/assets/select"
|
||||||
mkdir -p "/var/data/mame/assets/icons"
|
create_dir "/var/data/mame/assets/icons"
|
||||||
mkdir -p "/var/data/mame/assets/covers"
|
create_dir "/var/data/mame/assets/covers"
|
||||||
mkdir -p "/var/data/mame/assets/ui"
|
create_dir "/var/data/mame/assets/ui"
|
||||||
|
|
||||||
dir_prep "$saves_folder/mame-sa/hiscore" "/var/config/mame/hiscore"
|
dir_prep "$saves_folder/mame-sa/hiscore" "/var/config/mame/hiscore"
|
||||||
cp -fvr "$emuconfigs/mame/mame.ini" "$mameconf"
|
cp -fvr "$emuconfigs/mame/mame.ini" "$mameconf"
|
||||||
|
@ -771,13 +748,13 @@ prepare_component() {
|
||||||
|
|
||||||
if [[ "$component" =~ ^(gzdoom|GZDOOM|all)$ ]]; then
|
if [[ "$component" =~ ^(gzdoom|GZDOOM|all)$ ]]; then
|
||||||
# TODO: do a proper script
|
# TODO: do a proper script
|
||||||
# This is just a placeholder script to test the component's flow
|
# This is just a placeholder script to test the emulator's flow
|
||||||
echo "----------------------"
|
log i "----------------------"
|
||||||
echo "Initializing GZDOOM"
|
log i "Initializing GZDOOM"
|
||||||
echo "----------------------"
|
log i "----------------------"
|
||||||
|
|
||||||
mkdir -p "/var/config/gzdoom"
|
create_dir "/var/config/gzdoom"
|
||||||
mkdir -p "/var/data/gzdoom"
|
create_dir "/var/data/gzdoom"
|
||||||
cp -fvr "$emuconfigs/gzdoom/gzdoom.ini" "/var/config/gzdoom"
|
cp -fvr "$emuconfigs/gzdoom/gzdoom.ini" "/var/config/gzdoom"
|
||||||
cp -fvr "$emuconfigs/gzdoom/gzdoom.pk3" "/var/data/gzdoom"
|
cp -fvr "$emuconfigs/gzdoom/gzdoom.pk3" "/var/data/gzdoom"
|
||||||
|
|
||||||
|
@ -786,11 +763,11 @@ prepare_component() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$component" =~ ^(boilr|BOILR|all)$ ]]; then
|
if [[ "$component" =~ ^(boilr|BOILR|all)$ ]]; then
|
||||||
echo "----------------------"
|
log i "----------------------"
|
||||||
echo "Initializing BOILR"
|
log i "Initializing BOILR"
|
||||||
echo "----------------------"
|
log i "----------------------"
|
||||||
|
|
||||||
mkdir -p "/var/config/boilr"
|
create_dir "/var/config/boilr"
|
||||||
cp -fvr "/app/libexec/steam-sync/config.toml" "/var/config/boilr"
|
cp -fvr "/app/libexec/steam-sync/config.toml" "/var/config/boilr"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -125,7 +125,7 @@ build_preset_config() {
|
||||||
fi
|
fi
|
||||||
if [[ "$read_config_format" == "retroarch" && ! "$retroarch_all" == "true" ]]; then # If this is a RetroArch core, generate the override file
|
if [[ "$read_config_format" == "retroarch" && ! "$retroarch_all" == "true" ]]; then # If this is a RetroArch core, generate the override file
|
||||||
if [[ ! -f "$read_target_file" ]]; then
|
if [[ ! -f "$read_target_file" ]]; then
|
||||||
mkdir -p "$(realpath "$(dirname "$read_target_file")")"
|
create_dir "$(realpath "$(dirname "$read_target_file")")"
|
||||||
echo "$read_setting_name = \""$new_setting_value"\"" > "$read_target_file"
|
echo "$read_setting_name = \""$new_setting_value"\"" > "$read_target_file"
|
||||||
else
|
else
|
||||||
if [[ -z $(grep "$read_setting_name" "$read_target_file") ]]; then
|
if [[ -z $(grep "$read_setting_name" "$read_target_file") ]]; then
|
||||||
|
|
10
retrodeck.sh
10
retrodeck.sh
|
@ -104,7 +104,7 @@ done
|
||||||
if [ -f "$lockfile" ]; then
|
if [ -f "$lockfile" ]; then
|
||||||
# ...but the version doesn't match with the config file
|
# ...but the version doesn't match with the config file
|
||||||
if [ "$hard_version" != "$version" ]; then
|
if [ "$hard_version" != "$version" ]; then
|
||||||
echo "Config file's version is $version but the actual version is $hard_version"
|
log i "Config file's version is $version but the actual version is $hard_version"
|
||||||
if grep -qF "cooker" <<< $hard_version; then # If newly-installed version is a "cooker" build
|
if grep -qF "cooker" <<< $hard_version; then # If newly-installed version is a "cooker" build
|
||||||
configurator_generic_dialog "RetroDECK Cooker Warning" "RUNNING COOKER VERSIONS OF RETRODECK CAN BE EXTREMELY DANGEROUS AND ALL OF YOUR RETRODECK DATA\n(INCLUDING BIOS FILES, BORDERS, DOWNLOADED MEDIA, GAMELISTS, MODS, ROMS, SAVES, STATES, SCREENSHOTS, TEXTURE PACKS AND THEMES)\nARE AT RISK BY CONTINUING!"
|
configurator_generic_dialog "RetroDECK Cooker Warning" "RUNNING COOKER VERSIONS OF RETRODECK CAN BE EXTREMELY DANGEROUS AND ALL OF YOUR RETRODECK DATA\n(INCLUDING BIOS FILES, BORDERS, DOWNLOADED MEDIA, GAMELISTS, MODS, ROMS, SAVES, STATES, SCREENSHOTS, TEXTURE PACKS AND THEMES)\nARE AT RISK BY CONTINUING!"
|
||||||
set_setting_value $rd_conf "update_repo" "RetroDECK-cooker" retrodeck "options"
|
set_setting_value $rd_conf "update_repo" "RetroDECK-cooker" retrodeck "options"
|
||||||
|
@ -118,7 +118,7 @@ if [ -f "$lockfile" ]; then
|
||||||
rc=$? # Capture return code, as "Yes" button has no text value
|
rc=$? # Capture return code, as "Yes" button has no text value
|
||||||
if [[ $rc == "1" ]]; then # If any button other than "Yes" was clicked
|
if [[ $rc == "1" ]]; then # If any button other than "Yes" was clicked
|
||||||
if [[ $choice == "Don't Upgrade" ]]; then # If user wants to bypass the post_update.sh process this time.
|
if [[ $choice == "Don't Upgrade" ]]; then # If user wants to bypass the post_update.sh process this time.
|
||||||
echo "Skipping upgrade process for cooker build, updating stored version in retrodeck.cfg"
|
log i "Skipping upgrade process for cooker build, updating stored version in retrodeck.cfg"
|
||||||
set_setting_value $rd_conf "version" "$hard_version" retrodeck # Set version of currently running RetroDECK to updated retrodeck.cfg
|
set_setting_value $rd_conf "version" "$hard_version" retrodeck # Set version of currently running RetroDECK to updated retrodeck.cfg
|
||||||
elif [[ $choice == "Full Wipe and Fresh Install" ]]; then # Remove all RetroDECK data and start a fresh install
|
elif [[ $choice == "Full Wipe and Fresh Install" ]]; then # Remove all RetroDECK data and start a fresh install
|
||||||
if [[ $(configurator_generic_question_dialog "RetroDECK Cooker Reset" "This is going to remove all of the data in all locations used by RetroDECK!\n\n(INCLUDING BIOS FILES, BORDERS, DOWNLOADED MEDIA, GAMELISTS, MODS, ROMS, SAVES, STATES, SCREENSHOTS, TEXTURE PACKS AND THEMES)\n\nAre you sure you want to contine?") == "true" ]]; then
|
if [[ $(configurator_generic_question_dialog "RetroDECK Cooker Reset" "This is going to remove all of the data in all locations used by RetroDECK!\n\n(INCLUDING BIOS FILES, BORDERS, DOWNLOADED MEDIA, GAMELISTS, MODS, ROMS, SAVES, STATES, SCREENSHOTS, TEXTURE PACKS AND THEMES)\n\nAre you sure you want to contine?") == "true" ]]; then
|
||||||
|
@ -126,7 +126,7 @@ if [ -f "$lockfile" ]; then
|
||||||
if [[ $(configurator_generic_question_dialog "RetroDECK Cooker Reset" "But are you super DUPER sure? We REAAAALLLLLYY want to make sure you know what is happening here.\n\nThe ~/retrodeck and ~/.var/app/net.retrodeck.retrodeck folders and ALL of their contents\nare about to be PERMANENTLY removed.\n\nStill sure you want to proceed?") == "true" ]]; then
|
if [[ $(configurator_generic_question_dialog "RetroDECK Cooker Reset" "But are you super DUPER sure? We REAAAALLLLLYY want to make sure you know what is happening here.\n\nThe ~/retrodeck and ~/.var/app/net.retrodeck.retrodeck folders and ALL of their contents\nare about to be PERMANENTLY removed.\n\nStill sure you want to proceed?") == "true" ]]; then
|
||||||
configurator_generic_dialog "RetroDECK Cooker Reset" "Ok, if you're that sure, here we go!"
|
configurator_generic_dialog "RetroDECK Cooker Reset" "Ok, if you're that sure, here we go!"
|
||||||
if [[ $(configurator_generic_question_dialog "RetroDECK Cooker Reset" "(Are you actually being serious here? Because we are...\n\nNo backsies.)") == "true" ]]; then
|
if [[ $(configurator_generic_question_dialog "RetroDECK Cooker Reset" "(Are you actually being serious here? Because we are...\n\nNo backsies.)") == "true" ]]; then
|
||||||
echo "Removing RetroDECK data and starting fresh"
|
log w "Removing RetroDECK data and starting fresh"
|
||||||
rm -rf /var
|
rm -rf /var
|
||||||
rm -rf "$HOME/retrodeck"
|
rm -rf "$HOME/retrodeck"
|
||||||
source /app/libexec/global.sh
|
source /app/libexec/global.sh
|
||||||
|
@ -137,7 +137,7 @@ if [ -f "$lockfile" ]; then
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "Performing normal upgrade process for version" $cooker_base_version
|
log i "Performing normal upgrade process for version" $cooker_base_version
|
||||||
version=$cooker_base_version # Temporarily assign cooker base version to $version so update script can read it properly.
|
version=$cooker_base_version # Temporarily assign cooker base version to $version so update script can read it properly.
|
||||||
post_update
|
post_update
|
||||||
fi
|
fi
|
||||||
|
@ -156,7 +156,7 @@ if [ -f "$lockfile" ]; then
|
||||||
# Else, LOCKFILE IS NOT EXISTING (WAS REMOVED)
|
# Else, LOCKFILE IS NOT EXISTING (WAS REMOVED)
|
||||||
# if the lock file doesn't exist at all means that it's a fresh install or a triggered reset
|
# if the lock file doesn't exist at all means that it's a fresh install or a triggered reset
|
||||||
else
|
else
|
||||||
echo "Lockfile not found"
|
log w "Lockfile not found"
|
||||||
finit # Executing First/Force init
|
finit # Executing First/Force init
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -105,6 +105,7 @@ source /app/libexec/global.sh
|
||||||
# DIALOG TREE FUNCTIONS
|
# DIALOG TREE FUNCTIONS
|
||||||
|
|
||||||
configurator_welcome_dialog() {
|
configurator_welcome_dialog() {
|
||||||
|
log i "Configurator: opening welcome dialog"
|
||||||
if [[ $developer_options == "true" ]]; then
|
if [[ $developer_options == "true" ]]; then
|
||||||
welcome_menu_options=("Presets & Settings" "Here you find various presets, tweaks and settings to customize your RetroDECK experience" \
|
welcome_menu_options=("Presets & Settings" "Here you find various presets, tweaks and settings to customize your RetroDECK experience" \
|
||||||
"Open Emulator" "Launch and configure each emulators settings (for advanced users)" \
|
"Open Emulator" "Launch and configure each emulators settings (for advanced users)" \
|
||||||
|
@ -130,35 +131,43 @@ configurator_welcome_dialog() {
|
||||||
case $choice in
|
case $choice in
|
||||||
|
|
||||||
"Presets & Settings" )
|
"Presets & Settings" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_presets_and_settings_dialog
|
configurator_presets_and_settings_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Open Emulator" )
|
"Open Emulator" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_power_user_warning_dialog
|
configurator_power_user_warning_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"RetroDECK: Tools" )
|
"RetroDECK: Tools" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_retrodeck_tools_dialog
|
configurator_retrodeck_tools_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"RetroDECK: Troubleshooting" )
|
"RetroDECK: Troubleshooting" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_retrodeck_troubleshooting_dialog
|
configurator_retrodeck_troubleshooting_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"RetroDECK: About" )
|
"RetroDECK: About" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_about_retrodeck_dialog
|
configurator_about_retrodeck_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Sync with Steam" )
|
"Sync with Steam" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_add_steam
|
configurator_add_steam
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Developer Options" )
|
"Developer Options" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_generic_dialog "RetroDECK Configurator - Developer Options" "The following features and options are potentially VERY DANGEROUS for your RetroDECK install!\n\nThey should be considered the bleeding-edge of upcoming RetroDECK features, and never used when you have important saves/states/roms that are not backed up!\n\nYOU HAVE BEEN WARNED!"
|
configurator_generic_dialog "RetroDECK Configurator - Developer Options" "The following features and options are potentially VERY DANGEROUS for your RetroDECK install!\n\nThey should be considered the bleeding-edge of upcoming RetroDECK features, and never used when you have important saves/states/roms that are not backed up!\n\nYOU HAVE BEEN WARNED!"
|
||||||
configurator_developer_dialog
|
configurator_developer_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"" )
|
"" )
|
||||||
|
log i "Configurator: closing"
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
@ -176,18 +185,22 @@ configurator_presets_and_settings_dialog() {
|
||||||
case $choice in
|
case $choice in
|
||||||
|
|
||||||
"Global: Presets & Settings" )
|
"Global: Presets & Settings" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_global_presets_and_settings_dialog
|
configurator_global_presets_and_settings_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"RetroArch: Presets & Settings" )
|
"RetroArch: Presets & Settings" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_retroarch_presets_and_settings_dialog
|
configurator_retroarch_presets_and_settings_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Wii & GameCube: Presets & Settings" )
|
"Wii & GameCube: Presets & Settings" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_wii_and_gamecube_presets_and_settings_dialog
|
configurator_wii_and_gamecube_presets_and_settings_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"" ) # No selection made or Back button clicked
|
"" ) # No selection made or Back button clicked
|
||||||
|
log i "Configurator: going back"
|
||||||
configurator_welcome_dialog
|
configurator_welcome_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
@ -210,11 +223,13 @@ configurator_global_presets_and_settings_dialog() {
|
||||||
case $choice in
|
case $choice in
|
||||||
|
|
||||||
"Widescreen: Enable/Disable" )
|
"Widescreen: Enable/Disable" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
change_preset_dialog "widescreen"
|
change_preset_dialog "widescreen"
|
||||||
configurator_global_presets_and_settings_dialog
|
configurator_global_presets_and_settings_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Ask-to-Exit: Enable/Disable" )
|
"Ask-to-Exit: Enable/Disable" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
change_preset_dialog "ask_to_exit"
|
change_preset_dialog "ask_to_exit"
|
||||||
configurator_global_presets_and_settings_dialog
|
configurator_global_presets_and_settings_dialog
|
||||||
;;
|
;;
|
||||||
|
@ -248,21 +263,20 @@ configurator_global_presets_and_settings_dialog() {
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"RetroAchievements: Hardcore Mode" )
|
"RetroAchievements: Hardcore Mode" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
change_preset_dialog "cheevos_hardcore"
|
change_preset_dialog "cheevos_hardcore"
|
||||||
configurator_global_presets_and_settings_dialog
|
configurator_global_presets_and_settings_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Rewind: Enable/Disable" )
|
|
||||||
change_preset_dialog "rewind"
|
|
||||||
configurator_global_presets_and_settings_dialog
|
|
||||||
;;
|
|
||||||
|
|
||||||
"Swap A/B and X/Y Buttons: Enable/Disable" )
|
"Swap A/B and X/Y Buttons: Enable/Disable" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
|
|
||||||
change_preset_dialog "abxy_button_swap"
|
change_preset_dialog "abxy_button_swap"
|
||||||
configurator_global_presets_and_settings_dialog
|
configurator_global_presets_and_settings_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"" ) # No selection made or Back button clicked
|
"" ) # No selection made or Back button clicked
|
||||||
|
log i "Configurator: going back"
|
||||||
configurator_presets_and_settings_dialog
|
configurator_presets_and_settings_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
@ -278,11 +292,13 @@ configurator_retroarch_presets_and_settings_dialog() {
|
||||||
case $choice in
|
case $choice in
|
||||||
|
|
||||||
"Borders: Enable/Disable" )
|
"Borders: Enable/Disable" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
change_preset_dialog "borders"
|
change_preset_dialog "borders"
|
||||||
configurator_retroarch_presets_and_settings_dialog
|
configurator_retroarch_presets_and_settings_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"" ) # No selection made or Back button clicked
|
"" ) # No selection made or Back button clicked
|
||||||
|
log i "Configurator: going back"
|
||||||
configurator_presets_and_settings_dialog
|
configurator_presets_and_settings_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
@ -299,14 +315,17 @@ configurator_wii_and_gamecube_presets_and_settings_dialog() {
|
||||||
case $choice in
|
case $choice in
|
||||||
|
|
||||||
"Dolphin Textures: Universal Dynamic Input" )
|
"Dolphin Textures: Universal Dynamic Input" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_dolphin_input_textures_dialog
|
configurator_dolphin_input_textures_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Primehack Textures: Universal Dynamic Input" )
|
"Primehack Textures: Universal Dynamic Input" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_primehack_input_textures_dialog
|
configurator_primehack_input_textures_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"" ) # No selection made or Back button clicked
|
"" ) # No selection made or Back button clicked
|
||||||
|
log i "Configurator: going back"
|
||||||
configurator_presets_and_settings_dialog
|
configurator_presets_and_settings_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
@ -435,66 +454,82 @@ configurator_open_emulator_dialog() {
|
||||||
case $emulator in
|
case $emulator in
|
||||||
|
|
||||||
"RetroArch" )
|
"RetroArch" )
|
||||||
|
log i "Configurator: \"$emulator\""
|
||||||
retroarch
|
retroarch
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Cemu" )
|
"Cemu" )
|
||||||
|
log i "Configurator: \"$emulator\""
|
||||||
Cemu-wrapper
|
Cemu-wrapper
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Citra" )
|
"Citra" )
|
||||||
|
log i "Configurator: \"$emulator\""
|
||||||
citra-qt
|
citra-qt
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Dolphin" )
|
"Dolphin" )
|
||||||
|
log i "Configurator: \"$emulator\""
|
||||||
dolphin-emu
|
dolphin-emu
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Duckstation" )
|
"Duckstation" )
|
||||||
|
log i "Configurator: \"$emulator\""
|
||||||
duckstation-qt
|
duckstation-qt
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"MAME" )
|
"MAME" )
|
||||||
|
log i "Configurator: \"$emulator\""
|
||||||
mame-rdwrapper.sh
|
mame-rdwrapper.sh
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"MelonDS" )
|
"MelonDS" )
|
||||||
|
log i "Configurator: \"$emulator\""
|
||||||
melonDS
|
melonDS
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"PCSX2" )
|
"PCSX2" )
|
||||||
|
log i "Configurator: \"$emulator\""
|
||||||
pcsx2-qt
|
pcsx2-qt
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"PPSSPP" )
|
"PPSSPP" )
|
||||||
|
log i "Configurator: \"$emulator\""
|
||||||
PPSSPPSDL
|
PPSSPPSDL
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Primehack" )
|
"Primehack" )
|
||||||
|
log i "Configurator: \"$emulator\""
|
||||||
primehack-wrapper
|
primehack-wrapper
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"RPCS3" )
|
"RPCS3" )
|
||||||
|
log i "Configurator: \"$emulator\""
|
||||||
rpcs3
|
rpcs3
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Ryujinx" )
|
"Ryujinx" )
|
||||||
|
log i "Configurator: \"$emulator\""
|
||||||
Ryujinx.sh
|
Ryujinx.sh
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Vita3K" )
|
"Vita3K" )
|
||||||
|
log i "Configurator: \"$emulator\""
|
||||||
Vita3K
|
Vita3K
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"XEMU" )
|
"XEMU" )
|
||||||
|
log i "Configurator: \"$emulator\""
|
||||||
xemu
|
xemu
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Yuzu" )
|
"Yuzu" )
|
||||||
|
log i "Configurator: \"$emulator\""
|
||||||
yuzu
|
yuzu
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"" ) # No selection made or Back button clicked
|
"" ) # No selection made or Back button clicked
|
||||||
|
log i "Configurator: going back"
|
||||||
configurator_welcome_dialog
|
configurator_welcome_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
@ -517,15 +552,18 @@ configurator_retrodeck_tools_dialog() {
|
||||||
case $choice in
|
case $choice in
|
||||||
|
|
||||||
"Tool: Move Folders" )
|
"Tool: Move Folders" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_retrodeck_move_tool_dialog
|
configurator_retrodeck_move_tool_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Tool: Compress Games" )
|
"Tool: Compress Games" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_generic_dialog "RetroDECK Configurator - Compression Tool" "Depending on your library and compression choices, the process can sometimes take a long time.\nPlease be patient once it is started!"
|
configurator_generic_dialog "RetroDECK Configurator - Compression Tool" "Depending on your library and compression choices, the process can sometimes take a long time.\nPlease be patient once it is started!"
|
||||||
configurator_compression_tool_dialog
|
configurator_compression_tool_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Install: RetroDECK SD Controller Profile" )
|
"Install: RetroDECK SD Controller Profile" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_generic_dialog "RetroDECK Configurator - Install: RetroDECK Controller Profile" "We are now offering a new official RetroDECK controller profile!\nIt is an optional component that helps you get the most out of RetroDECK with a new in-game radial menu for unified hotkeys across emulators.\n\nThe files need to be installed outside of the normal ~/retrodeck folder, so we wanted your permission before proceeding.\n\nThe files will be installed at the following shared Steam locations:\n\n$HOME/.steam/steam/tenfoot/resource/images/library/controller/binding_icons/\n$HOME/.steam/steam/controller_base/templates"
|
configurator_generic_dialog "RetroDECK Configurator - Install: RetroDECK Controller Profile" "We are now offering a new official RetroDECK controller profile!\nIt is an optional component that helps you get the most out of RetroDECK with a new in-game radial menu for unified hotkeys across emulators.\n\nThe files need to be installed outside of the normal ~/retrodeck folder, so we wanted your permission before proceeding.\n\nThe files will be installed at the following shared Steam locations:\n\n$HOME/.steam/steam/tenfoot/resource/images/library/controller/binding_icons/\n$HOME/.steam/steam/controller_base/templates"
|
||||||
if [[ $(configurator_generic_question_dialog "Install: RetroDECK Controller Profile" "Would you like to install the official RetroDECK controller profile?") == "true" ]]; then
|
if [[ $(configurator_generic_question_dialog "Install: RetroDECK Controller Profile" "Would you like to install the official RetroDECK controller profile?") == "true" ]]; then
|
||||||
install_retrodeck_controller_profile
|
install_retrodeck_controller_profile
|
||||||
|
@ -535,6 +573,7 @@ configurator_retrodeck_tools_dialog() {
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Install: PS3 Firmware" )
|
"Install: PS3 Firmware" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
if [[ $(check_network_connectivity) == "true" ]]; then
|
if [[ $(check_network_connectivity) == "true" ]]; then
|
||||||
configurator_generic_dialog "RetroDECK Configurator - Install: PS3 firmware" "This tool will download firmware required by RPCS3 to emulate PS3 games.\n\nThe process will take several minutes, and the emulator will launch to finish the installation.\nPlease close RPCS3 manually once the installation is complete."
|
configurator_generic_dialog "RetroDECK Configurator - Install: PS3 firmware" "This tool will download firmware required by RPCS3 to emulate PS3 games.\n\nThe process will take several minutes, and the emulator will launch to finish the installation.\nPlease close RPCS3 manually once the installation is complete."
|
||||||
(
|
(
|
||||||
|
@ -571,10 +610,12 @@ configurator_retrodeck_tools_dialog() {
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"RetroDECK: Change Update Setting" )
|
"RetroDECK: Change Update Setting" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_online_update_setting_dialog
|
configurator_online_update_setting_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"" ) # No selection made or Back button clicked
|
"" ) # No selection made or Back button clicked
|
||||||
|
log i "Configurator: going back"
|
||||||
configurator_welcome_dialog
|
configurator_welcome_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
@ -599,42 +640,52 @@ configurator_retrodeck_move_tool_dialog() {
|
||||||
case $choice in
|
case $choice in
|
||||||
|
|
||||||
"Move all of RetroDECK" )
|
"Move all of RetroDECK" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_move_folder_dialog "rdhome"
|
configurator_move_folder_dialog "rdhome"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Move ROMs folder" )
|
"Move ROMs folder" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_move_folder_dialog "roms_folder"
|
configurator_move_folder_dialog "roms_folder"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Move BIOS folder" )
|
"Move BIOS folder" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_move_folder_dialog "bios_folder"
|
configurator_move_folder_dialog "bios_folder"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Move Downloaded Media folder" )
|
"Move Downloaded Media folder" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_move_folder_dialog "media_folder"
|
configurator_move_folder_dialog "media_folder"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Move Saves folder" )
|
"Move Saves folder" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_move_folder_dialog "saves_folder"
|
configurator_move_folder_dialog "saves_folder"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Move States folder" )
|
"Move States folder" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_move_folder_dialog "states_folder"
|
configurator_move_folder_dialog "states_folder"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Move Themes folder" )
|
"Move Themes folder" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_move_folder_dialog "themes_folder"
|
configurator_move_folder_dialog "themes_folder"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Move Screenshots folder" )
|
"Move Screenshots folder" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_move_folder_dialog "screenshots_folder"
|
configurator_move_folder_dialog "screenshots_folder"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Move Mods folder" )
|
"Move Mods folder" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_move_folder_dialog "mods_folder"
|
configurator_move_folder_dialog "mods_folder"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Move Texture Packs folder" )
|
"Move Texture Packs folder" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_move_folder_dialog "texture_packs_folder"
|
configurator_move_folder_dialog "texture_packs_folder"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
@ -657,30 +708,37 @@ configurator_compression_tool_dialog() {
|
||||||
case $choice in
|
case $choice in
|
||||||
|
|
||||||
"Compress Single Game" )
|
"Compress Single Game" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_compress_single_game_dialog
|
configurator_compress_single_game_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Compress Multiple Games - CHD" )
|
"Compress Multiple Games - CHD" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_compress_multiple_games_dialog "chd"
|
configurator_compress_multiple_games_dialog "chd"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Compress Multiple Games - ZIP" )
|
"Compress Multiple Games - ZIP" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_compress_multiple_games_dialog "zip"
|
configurator_compress_multiple_games_dialog "zip"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Compress Multiple Games - RVZ" )
|
"Compress Multiple Games - RVZ" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_compress_multiple_games_dialog "rvz"
|
configurator_compress_multiple_games_dialog "rvz"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Compress Multiple Games - All Formats" )
|
"Compress Multiple Games - All Formats" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_compress_multiple_games_dialog "all"
|
configurator_compress_multiple_games_dialog "all"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Compress All Games" )
|
"Compress All Games" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_compress_multiple_games_dialog "everything"
|
configurator_compress_multiple_games_dialog "everything"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"" ) # No selection made or Back button clicked
|
"" ) # No selection made or Back button clicked
|
||||||
|
log i "Configurator: going back"
|
||||||
configurator_retrodeck_tools_dialog
|
configurator_retrodeck_tools_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
@ -893,6 +951,7 @@ configurator_retrodeck_troubleshooting_dialog() {
|
||||||
case $choice in
|
case $choice in
|
||||||
|
|
||||||
"Backup: RetroDECK Userdata" )
|
"Backup: RetroDECK Userdata" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_generic_dialog "RetroDECK Configurator - Backup: RetroDECK Userdata" "This tool will compress important RetroDECK userdata (basically everything except the ROMs folder) into a zip file.\n\nThis process can take several minutes, and the resulting zip file can be found in the ~/retrodeck/backups folder."
|
configurator_generic_dialog "RetroDECK Configurator - Backup: RetroDECK Userdata" "This tool will compress important RetroDECK userdata (basically everything except the ROMs folder) into a zip file.\n\nThis process can take several minutes, and the resulting zip file can be found in the ~/retrodeck/backups folder."
|
||||||
(
|
(
|
||||||
backup_retrodeck_userdata
|
backup_retrodeck_userdata
|
||||||
|
@ -910,6 +969,7 @@ configurator_retrodeck_troubleshooting_dialog() {
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Check & Verify: BIOS Files" )
|
"Check & Verify: BIOS Files" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_check_bios_files
|
configurator_check_bios_files
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
@ -918,14 +978,17 @@ configurator_retrodeck_troubleshooting_dialog() {
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Check & Verify: Multi-file structure" )
|
"Check & Verify: Multi-file structure" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_check_multifile_game_structure
|
configurator_check_multifile_game_structure
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"RetroDECK: Reset" )
|
"RetroDECK: Reset" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_reset_dialog
|
configurator_reset_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"" ) # No selection made or Back button clicked
|
"" ) # No selection made or Back button clicked
|
||||||
|
log i "Configurator: going back"
|
||||||
configurator_welcome_dialog
|
configurator_welcome_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
@ -996,6 +1059,7 @@ configurator_reset_dialog() {
|
||||||
case $choice in
|
case $choice in
|
||||||
|
|
||||||
"Reset Specific Emulator" )
|
"Reset Specific Emulator" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
component_to_reset=$(zenity --list \
|
component_to_reset=$(zenity --list \
|
||||||
--title "RetroDECK Configurator Utility - Reset Specific Standalone Emulator" --cancel-label="Back" \
|
--title "RetroDECK Configurator Utility - Reset Specific Standalone Emulator" --cancel-label="Back" \
|
||||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||||
|
@ -1084,6 +1148,7 @@ configurator_reset_dialog() {
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Reset All Emulators" )
|
"Reset All Emulators" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
if [[ $(check_network_connectivity) == "true" ]]; then
|
if [[ $(check_network_connectivity) == "true" ]]; then
|
||||||
if [[ $(configurator_reset_confirmation_dialog "all emulators" "Are you sure you want to reset all emulators to default settings?\n\nThis process cannot be undone.") == "true" ]]; then
|
if [[ $(configurator_reset_confirmation_dialog "all emulators" "Are you sure you want to reset all emulators to default settings?\n\nThis process cannot be undone.") == "true" ]]; then
|
||||||
(
|
(
|
||||||
|
@ -1105,6 +1170,7 @@ configurator_reset_dialog() {
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Reset RetroDECK" )
|
"Reset RetroDECK" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
if [[ $(configurator_reset_confirmation_dialog "RetroDECK" "Are you sure you want to reset RetroDECK entirely?\n\nThis process cannot be undone.") == "true" ]]; then
|
if [[ $(configurator_reset_confirmation_dialog "RetroDECK" "Are you sure you want to reset RetroDECK entirely?\n\nThis process cannot be undone.") == "true" ]]; then
|
||||||
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
|
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
|
||||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||||
|
@ -1136,10 +1202,12 @@ configurator_about_retrodeck_dialog() {
|
||||||
case $choice in
|
case $choice in
|
||||||
|
|
||||||
"Version History" )
|
"Version History" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_version_history_dialog
|
configurator_version_history_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Credits" )
|
"Credits" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
zenity --icon-name=net.retrodeck.retrodeck --text-info --width=1200 --height=720 \
|
zenity --icon-name=net.retrodeck.retrodeck --text-info --width=1200 --height=720 \
|
||||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||||
--title "RetroDECK Credits" \
|
--title "RetroDECK Credits" \
|
||||||
|
@ -1148,6 +1216,7 @@ configurator_about_retrodeck_dialog() {
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"" ) # No selection made or Back button clicked
|
"" ) # No selection made or Back button clicked
|
||||||
|
log i "Configurator: going back"
|
||||||
configurator_welcome_dialog
|
configurator_welcome_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
@ -1214,10 +1283,12 @@ configurator_version_history_dialog() {
|
||||||
case $choice in
|
case $choice in
|
||||||
|
|
||||||
"Full RetroDECK Changelog" )
|
"Full RetroDECK Changelog" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
changelog_dialog "all"
|
changelog_dialog "all"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"RetroDECK"*"Changelog" )
|
"RetroDECK"*"Changelog" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
local version=$(echo "$choice" | sed 's/^RetroDECK \(.*\) Changelog$/\1/')
|
local version=$(echo "$choice" | sed 's/^RetroDECK \(.*\) Changelog$/\1/')
|
||||||
changelog_dialog "$version"
|
changelog_dialog "$version"
|
||||||
;;
|
;;
|
||||||
|
@ -1240,23 +1311,28 @@ configurator_developer_dialog() {
|
||||||
case $choice in
|
case $choice in
|
||||||
|
|
||||||
"Change Multi-user mode" )
|
"Change Multi-user mode" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_retrodeck_multiuser_dialog
|
configurator_retrodeck_multiuser_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Change Update Channel" )
|
"Change Update Channel" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_online_update_channel_dialog
|
configurator_online_update_channel_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Browse the Wiki" )
|
"Browse the Wiki" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
xdg-open "https://github.com/XargonWan/RetroDECK/wiki"
|
xdg-open "https://github.com/XargonWan/RetroDECK/wiki"
|
||||||
configurator_developer_dialog
|
configurator_developer_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"USB Import" )
|
"USB Import" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
configurator_usb_import_dialog
|
configurator_usb_import_dialog
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Install RetroDECK Starter Pack" )
|
"Install RetroDECK Starter Pack" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
if [[ $(configurator_generic_question_dialog "Install: RetroDECK Starter Pack" "The RetroDECK creators have put together a collection of classic retro games you might enjoy!\n\nWould you like to have them automatically added to your library?") == "true" ]]; then
|
if [[ $(configurator_generic_question_dialog "Install: RetroDECK Starter Pack" "The RetroDECK creators have put together a collection of classic retro games you might enjoy!\n\nWould you like to have them automatically added to your library?") == "true" ]]; then
|
||||||
install_retrodeck_starterpack
|
install_retrodeck_starterpack
|
||||||
fi
|
fi
|
||||||
|
@ -1264,6 +1340,7 @@ configurator_developer_dialog() {
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"" ) # No selection made or Back button clicked
|
"" ) # No selection made or Back button clicked
|
||||||
|
log i "Configurator: going back"
|
||||||
configurator_welcome_dialog
|
configurator_welcome_dialog
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
@ -1335,6 +1412,7 @@ configurator_usb_import_dialog() {
|
||||||
case $choice in
|
case $choice in
|
||||||
|
|
||||||
"Prepare USB device" )
|
"Prepare USB device" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
external_devices=()
|
external_devices=()
|
||||||
|
|
||||||
while read -r size device_path; do
|
while read -r size device_path; do
|
||||||
|
@ -1362,6 +1440,7 @@ configurator_usb_import_dialog() {
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"Import from USB" )
|
"Import from USB" )
|
||||||
|
log i "Configurator: opening \"$choice\" menu"
|
||||||
external_devices=()
|
external_devices=()
|
||||||
|
|
||||||
while read -r size device_path; do
|
while read -r size device_path; do
|
||||||
|
@ -1408,6 +1487,7 @@ configurator_usb_import_dialog() {
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"" ) # No selection made or Back button clicked
|
"" ) # No selection made or Back button clicked
|
||||||
|
log i "Configurator: going back"
|
||||||
configurator_developer_dialog
|
configurator_developer_dialog
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
|
@ -7,7 +7,7 @@ source /app/libexec/global.sh
|
||||||
|
|
||||||
# Check if a function was specified
|
# Check if a function was specified
|
||||||
if [[ $# -lt 1 ]]; then
|
if [[ $# -lt 1 ]]; then
|
||||||
echo "Usage: $0 function_name [args...]"
|
log e "Usage: $0 function_name [args...]"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ shift
|
||||||
|
|
||||||
# Check if the function exists
|
# Check if the function exists
|
||||||
if ! declare -f "$function_name" >/dev/null 2>&1; then
|
if ! declare -f "$function_name" >/dev/null 2>&1; then
|
||||||
echo "Function '$function_name' not found"
|
log e "Function \'$function_name\' not found"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue