From b93ee84889eb16f4e6471a0501dc9c2d6c8d42cd Mon Sep 17 00:00:00 2001 From: icenine451 Date: Tue, 2 May 2023 14:32:45 -0400 Subject: [PATCH 1/6] Clean up asterix use in paths with variables --- functions.sh | 26 +++++++++++++------------- post_update.sh | 8 ++++---- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/functions.sh b/functions.sh index 0089dc89..b940df97 100644 --- a/functions.sh +++ b/functions.sh @@ -1256,7 +1256,7 @@ prepare_emulator() { cp -fv $emuconfigs/retroarch/retroarch.cfg /var/config/retroarch/ cp -fv $emuconfigs/retroarch/retroarch-core-options.cfg /var/config/retroarch/ mkdir -pv /var/config/retroarch/config/ - cp -rf $emuconfigs/retroarch/core-overrides/* /var/config/retroarch/config + cp -rf "$emuconfigs/retroarch/core-overrides/"* /var/config/retroarch/config dir_prep "$borders_folder" "/var/config/retroarch/borders" cp -rt /var/config/retroarch/borders/ /app/retrodeck/emu-configs/retroarch/borders/* set_setting_value "$raconf" "savefile_directory" "$saves_folder" "retroarch" @@ -1381,7 +1381,7 @@ prepare_emulator() { if [[ $multi_user_mode == "true" ]]; then # Multi-user actions rm -rf "$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" "SavesPath" "$saves_folder/gba" "dolphin" "GBA" set_setting_value "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu/Dolphin.ini" "ISOPath0" "$roms_folder/wii" "dolphin" "General" @@ -1432,7 +1432,7 @@ prepare_emulator() { if [[ $multi_user_mode == "true" ]]; then # Multi-user actions rm -rf "$multi_user_data_folder/$SteamAppUser/config/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" "Card1Path" "$saves_folder/psx/duckstation/memcards/shared_card_1.mcd" "duckstation" "MemoryCards" set_setting_value "$multi_user_data_folder/$SteamAppUser/data/duckstation/settings.ini" "Card2Path" "$saves_folder/psx/duckstation/memcards/shared_card_2.mcd" "duckstation" "MemoryCards" @@ -1441,7 +1441,7 @@ prepare_emulator() { else # Single-user actions rm -rf /var/config/duckstation mkdir -p /var/data/duckstation/ - cp -fv $emuconfigs/duckstation/* /var/data/duckstation + cp -fv "$emuconfigs/duckstation/"* /var/data/duckstation 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" "Card2Path" "$saves_folder/psx/duckstation/memcards/shared_card_2.mcd" "duckstation" "MemoryCards" @@ -1507,7 +1507,7 @@ prepare_emulator() { if [[ $multi_user_mode == "true" ]]; then # Multi-user actions rm -rf "$multi_user_data_folder/$SteamAppUser/config/PCSX2" 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" "Snapshots" "$screenshots_folder" "pcsx2" "Folders" set_setting_value "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis/PCSX2.ini" "SaveStates" "$states_folder/ps2/pcsx2" "pcsx2" "Folders" @@ -1517,7 +1517,7 @@ prepare_emulator() { else # Single-user actions rm -rf /var/config/PCSX2 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" "Snapshots" "$screenshots_folder" "pcsx2" "Folders" set_setting_value "$pcsx2conf" "SaveStates" "$states_folder/ps2/pcsx2" "pcsx2" "Folders" @@ -1553,13 +1553,13 @@ prepare_emulator() { if [[ $multi_user_mode == "true" ]]; then # Multi-user actions rm -rf "$multi_user_data_folder/$SteamAppUser/config/ppsspp" 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" dir_prep "$multi_user_data_folder/$SteamAppUser/config/ppsspp" "/var/config/ppsspp" else # Single-user actions rm -rf /var/config/ppsspp 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" fi fi @@ -1576,7 +1576,7 @@ prepare_emulator() { if [[ $multi_user_mode == "true" ]]; then # Multi-user actions rm -rf "$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" dir_prep "$multi_user_data_folder/$SteamAppUser/config/primehack" "/var/config/primehack" else # Single-user actions @@ -1617,7 +1617,7 @@ prepare_emulator() { if [[ $multi_user_mode == "true" ]]; then # Multi-user actions rm -rf "$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. 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" @@ -1625,7 +1625,7 @@ prepare_emulator() { else # Single-user actions rm -rf /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. sed -i 's^\^$(EmulatorDir): .*^$(EmulatorDir): '"$bios_folder/rpcs3/"'^' "$rpcs3vfsconf" set_setting_value "$rpcs3vfsconf" "/games/" "$roms_folder/ps3/" "rpcs3" @@ -1735,7 +1735,7 @@ prepare_emulator() { if [[ $multi_user_mode == "true" ]]; then # Multi-user actions rm -rf "$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" "sdmc_directory" "$saves_folder/switch/yuzu/sdmc" "yuzu" "Data%20Storage" set_setting_value "$multi_user_data_folder/$SteamAppUser/config/yuzu/qt-config.ini" "Paths\gamedirs\4\path" "$roms_folder/switch" "yuzu" "UI" @@ -1744,7 +1744,7 @@ prepare_emulator() { else # Single-user actions rm -rf /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" "sdmc_directory" "$saves_folder/switch/yuzu/sdmc" "yuzu" "Data%20Storage" set_setting_value "$yuzuconf" "Paths\gamedirs\4\path" "$roms_folder/switch" "yuzu" "UI" diff --git a/post_update.sh b/post_update.sh index 4f2499f1..da5dcf81 100644 --- a/post_update.sh +++ b/post_update.sh @@ -45,9 +45,9 @@ post_update() { dir_prep "$bios_folder/pico-8" "$HOME/.lexaloffle/pico-8" # Store binary and config files together. The .lexaloffle directory is a hard-coded location for the PICO-8 config file, cannot be changed dir_prep "$saves_folder/pico-8" "$bios_folder/pico-8/cdata" # PICO-8 saves folder structure was backwards, fixing for consistency. - 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 sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' /var/config/citra-emu/qt-config.ini - cp -fr $emuconfigs/yuzu/* /var/config/yuzu/ + cp -fr "$emuconfigs/yuzu/"* /var/config/yuzu/ sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' /var/config/yuzu/qt-config.ini # Remove unneeded tools folder, as location has changed to RO space @@ -101,7 +101,7 @@ post_update() { set_setting_value "$rpcs3vfsconf" "/games/" "$roms_folder/ps3/" "rpcs3" if [[ -d "$roms_folder/ps3/emudir" ]]; then # The old location exists, meaning the emulator was run at least once. mkdir "$bios_folder/rpcs3" - mv "$roms_folder/ps3/emudir/*" "$bios_folder/rpcs3/" + mv "$roms_folder/ps3/emudir/"* "$bios_folder/rpcs3/" 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." fi @@ -120,7 +120,7 @@ post_update() { 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 mkdir -p "$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 unlink "/var/data/duckstation/memcards" set_setting_value "$duckstationconf" "Card1Path" "$saves_folder/psx/duckstation/memcards/shared_card_1.mcd" "duckstation" "MemoryCards" From 402695888758adda148738862e51c16ad19394a9 Mon Sep 17 00:00:00 2001 From: icenine451 Date: Tue, 2 May 2023 14:46:54 -0400 Subject: [PATCH 2/6] Add custom title text to generic info dialog --- functions.sh | 50 +++++++++++++++++++++---------------------- global.sh | 4 ++-- retrodeck.sh | 2 +- tools/configurator.sh | 50 +++++++++++++++++++++---------------------- 4 files changed, 53 insertions(+), 53 deletions(-) diff --git a/functions.sh b/functions.sh index b940df97..f2b22310 100644 --- a/functions.sh +++ b/functions.sh @@ -733,7 +733,7 @@ check_for_version_update() { set_setting_value $rd_conf "update_ignore" "$online_version" retrodeck "options" # Store version to ignore for future checks fi else # User clicked "Yes" - configurator_generic_dialog "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." ( flatpak-spawn --host flatpak update --noninteractive -y net.retrodeck.retrodeck ) | @@ -741,7 +741,7 @@ check_for_version_update() { --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ --title "RetroDECK Updater" \ --text="RetroDECK is updating to the latest version, please wait." - configurator_generic_dialog "The update process is now complete!\n\nPlease restart RetroDECK to keep the fun going." + configurator_generic_dialog "RetroDECK Online Update" "The update process is now complete!\n\nPlease restart RetroDECK to keep the fun going." exit 1 fi elif [[ "$update_repo" == "RetroDECK-cooker" ]] && [[ ! $current_version == $online_version ]]; then @@ -755,7 +755,7 @@ check_for_version_update() { set_setting_value $rd_conf "update_ignore" "$online_version" retrodeck "options" # Store version to ignore for future checks. fi else # User clicked "Yes" - configurator_generic_dialog "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/') mkdir -p "$rdhome/RetroDECK_Updates" @@ -767,7 +767,7 @@ check_for_version_update() { --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ --title "RetroDECK Updater" \ --text="RetroDECK is updating to the latest version, please wait." - configurator_generic_dialog "The update process is now complete!\n\nPlease restart RetroDECK to keep the fun going." + configurator_generic_dialog "RetroDECK Online Update" "The update process is now complete!\n\nPlease restart RetroDECK to keep the fun going." exit 1 fi fi @@ -854,11 +854,11 @@ echo "$chosen_user" multi_user_enable_multi_user_mode() { if [[ -z "$SteamAppUser" ]]; then - configurator_generic_dialog "The Steam username of the current user could not be determined from the system.\n\nThis can happen when running in Desktop mode.\n\nYou will be asked to specify the Steam username (not profile name) of the current user in the next dialog." + configurator_generic_dialog "RetroDECK Multi-User Mode" "The Steam username of the current user could not be determined from the system.\n\nThis can happen when running in Desktop mode.\n\nYou will be asked to specify the Steam username (not profile name) of the current user in the next dialog." fi 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 - configurator_generic_dialog "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" 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 @@ -869,7 +869,7 @@ multi_user_enable_multi_user_mode() { if [[ -d "$multi_user_data_folder/$SteamAppUser" ]]; then configurator_process_complete_dialog "enabling multi-user support" else - configurator_generic_dialog "It looks like something went wrong while enabling multi-user mode." + configurator_generic_dialog "RetroDECK Multi-User Mode" "It looks like something went wrong while enabling multi-user mode." fi } @@ -893,7 +893,7 @@ multi_user_disable_multi_user_mode() { set_setting_value $rd_conf "multi_user_mode" "false" retrodeck "options" configurator_process_complete_dialog "disabling multi-user support" else - configurator_generic_dialog "No single user was selected, please try the process again." + configurator_generic_dialog "RetroDECK Multi-User Mode" "No single user was selected, please try the process again." configurator_retrodeck_multiuser_dialog fi else @@ -916,12 +916,12 @@ multi_user_determine_current_user() { else # Unable to find Steam user ID if [[ $(ls -1 "$multi_user_data_folder" | wc -l) -gt 1 ]]; then if [[ -z $default_user ]]; then # And a default user is not set - configurator_generic_dialog "The current user could not be determined from the system, and there are multiple users registered.\n\nPlease select which user is currently playing in the next dialog." + configurator_generic_dialog "RetroDECK Multi-User Mode" "The current user could not be determined from the system, and there are multiple users registered.\n\nPlease select which user is currently playing in the next dialog." SteamAppUser=$(multi_user_choose_current_user_dialog) if [[ ! -z $SteamAppUser ]]; then # User was chosen from dialog multi_user_link_current_user_files else - configurator_generic_dialog "No user was chosen, RetroDECK will launch with the files from the user who played most recently." + configurator_generic_dialog "RetroDECK Multi-User Mode" "No user was chosen, RetroDECK will launch with the files from the user who played most recently." fi else # The default user is set if [[ ! -z $(ls -1 $multi_user_data_folder | grep "$default_user") ]]; then # Confirm user data folder exists @@ -940,7 +940,7 @@ multi_user_determine_current_user() { if [[ ! -z "$SteamAppUser" ]]; then multi_user_setup_new_user else # If running in Desktop mode for the first time - configurator_generic_dialog "The current user could not be determined from the system and there is no existing userlist.\n\nPlease enter the Steam account username (not profile name) into the next dialog, or run RetroDECK in game mode." + configurator_generic_dialog "RetroDECK Multi-User Mode" "The current user could not be determined from the system and there is no existing userlist.\n\nPlease enter the Steam account username (not profile name) into the next dialog, or run RetroDECK in game mode." if zenity --entry \ --title="Specify Steam username" \ --text="Enter Steam username:" @@ -949,17 +949,17 @@ multi_user_determine_current_user() { if [[ ! -z "$SteamAppUser" ]]; then multi_user_setup_new_user else # But dialog box was blank - configurator_generic_dialog "No username was entered, so multi-user data folder cannot be created.\n\nDisabling multi-user mode, please try the process again." + configurator_generic_dialog "RetroDECK Multi-User Mode" "No username was entered, so multi-user data folder cannot be created.\n\nDisabling multi-user mode, please try the process again." set_setting_value $rd_conf "multi_user_mode" "false" retrodeck "options" fi else # User clicked "Cancel" - configurator_generic_dialog "Cancelling multi-user mode activation." + configurator_generic_dialog "RetroDECK Multi-User Mode" "Cancelling multi-user mode activation." set_setting_value $rd_conf "multi_user_mode" "false" retrodeck "options" fi fi fi else - configurator_generic_dialog "Multi-user mode is not currently enabled" + configurator_generic_dialog "RetroDECK Multi-User Mode" "Multi-user mode is not currently enabled" fi } @@ -2230,11 +2230,11 @@ configurator_process_complete_dialog() { configurator_generic_dialog() { # This dialog is for showing temporary messages before another process happens. - # USAGE: configurator_generic_dialog "info text" + # USAGE: configurator_generic_dialog "title text" "info text" zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ - --title "RetroDECK Configurator Utility" \ - --text="$1" + --title "$1" \ + --text="$2" } configurator_generic_question_dialog() { @@ -2303,17 +2303,17 @@ configurator_move_folder_dialog() { elif [[ "$choice" == "SD Card" ]]; then # If the user wants to move the folder to the predefined SD card location, set the target as sdcard from retrodeck.cfg local dest_root="$sdcard" else - configurator_generic_dialog "Select the parent folder you would like to store the $(basename $dir_to_move) folder in." + configurator_generic_dialog "RetroDECK Configurator - Move Folder" "Select the parent folder you would like to store the $(basename $dir_to_move) folder in." local dest_root=$(directory_browse "RetroDECK directory location") # Set the destination root as the selected custom location fi if [[ (! -z "$dest_root") && ( -w "$dest_root") ]]; then # If user picked a destination and it is writable if [[ (-d "$dest_root/$rd_dir_path") && (! -L "$dest_root/$rd_dir_path") && (! $rd_dir_name == "rdhome") ]] || [[ "$(realpath $dir_to_move)" == "$dest_root/$rd_dir_path" ]]; then # If the user is trying to move the folder to where it already is (excluding symlinks that will be unlinked) - configurator_generic_dialog "The $(basename $dir_to_move) folder is already at that location, please pick a new one." + configurator_generic_dialog "RetroDECK Configurator - Move Folder" "The $(basename $dir_to_move) folder is already at that location, please pick a new one." configurator_move_folder_dialog "$rd_dir_name" else if [[ $(verify_space "$(echo $dir_to_move | sed 's/\/$//')" "$dest_root") ]]; then # Make sure there is enough space at the destination - configurator_generic_dialog "Moving $(basename $dir_to_move) folder to $choice" + configurator_generic_dialog "RetroDECK Configurator - Move Folder" "Moving $(basename $dir_to_move) folder to $choice" unlink "$dest_root/$rd_dir_path" # In case there is already a symlink at the picked destination move "$dir_to_move" "$dest_root/$rd_dir_path" if [[ -d "$dest_root/$rd_dir_path" ]]; then # If the move succeeded @@ -2328,7 +2328,7 @@ configurator_move_folder_dialog() { fi configurator_process_complete_dialog "moving the RetroDECK data directory to internal storage" else - configurator_generic_dialog "The moving process was not completed, please try again." + configurator_generic_dialog "RetroDECK Configurator - Move Folder" "The moving process was not completed, please try again." fi else # If there isn't enough space in the picked destination zenity --icon-name=net.retrodeck.retrodeck --error --no-wrap \ @@ -2339,21 +2339,21 @@ configurator_move_folder_dialog() { fi else # If the user didn't pick any custom destination, or the destination picked is unwritable if [[ ! -z "$dest_root" ]]; then - configurator_generic_dialog "No destination was chosen, so no files have been moved." + configurator_generic_dialog "RetroDECK Configurator - Move Folder" "No destination was chosen, so no files have been moved." else - configurator_generic_dialog "The chosen destination is not writable.\nNo files have been moved.\n\nThis can happen when trying to select a location that RetroDECK does not have permission to write.\nThis can normally be fixed by adding the desired path to the RetroDECK permissions with Flatseal." + configurator_generic_dialog "RetroDECK Configurator - Move Folder" "The chosen destination is not writable.\nNo files have been moved.\n\nThis can happen when trying to select a location that RetroDECK does not have permission to write.\nThis can normally be fixed by adding the desired path to the RetroDECK permissions with Flatseal." fi fi ;; esac else # The folder to move was not found at the path pulled from retrodeck.cfg and it needs to be reconfigured manually. - configurator_generic_dialog "The $(basename $dir_to_move) folder was not found at the expected location.\n\nThis may have happened if the folder was moved manually.\n\nPlease select the current location of the folder." + configurator_generic_dialog "RetroDECK Configurator - Move Folder" "The $(basename $dir_to_move) folder was not found at the expected location.\n\nThis may have happened if the folder was moved manually.\n\nPlease select the current location of the folder." dir_to_move=$(directory_browse "RetroDECK $(basename $dir_to_move) directory location") eval "$rd_dir_name"="$dir_to_move" prepare_emulator "postmove" "all" conf_write - configurator_generic_dialog "RetroDECK $(basename $dir_to_move) folder now configured at\n$dir_to_move." + configurator_generic_dialog "RetroDECK Configurator - Move Folder" "RetroDECK $(basename $dir_to_move) folder now configured at\n$dir_to_move." configurator_move_folder_dialog "$rd_dir_name" fi } diff --git a/global.sh b/global.sh index 7d66313c..1f8ca2fd 100755 --- a/global.sh +++ b/global.sh @@ -109,7 +109,7 @@ if [[ ! -f "$rd_conf" ]]; then # Check if SD card path has changed from SteamOS update if [[ ! -d $default_sd && "$(ls -A /run/media/deck/)" ]]; then - configurator_generic_dialog "The SD card was not found in the expected location.\nThis may happen when SteamOS is updated.\n\nPlease browse to the current location of the SD card.\n\nIf you are not using an SD card, please click \"Cancel\"." + configurator_generic_dialog "RetroDECK Setup" "The SD card was not found in the expected location.\nThis may happen when SteamOS is updated.\n\nPlease browse to the current location of the SD card.\n\nIf you are not using an SD card, please click \"Cancel\"." default_sd=$(directory_browse "SD Card Location") fi @@ -146,7 +146,7 @@ else # Verify rdhome is where it is supposed to be. if [[ ! -d $rdhome ]]; then prev_home_path=$rdhome - configurator_generic_dialog "The RetroDECK data folder was not found in the expected location.\nThis may happen when SteamOS is updated.\n\nPlease browse to the current location of the \"retrodeck\" folder." + configurator_generic_dialog "RetroDECK Setup" "The RetroDECK data folder was not found in the expected location.\nThis may happen when SteamOS is updated.\n\nPlease browse to the current location of the \"retrodeck\" folder." new_home_path=$(directory_browse "RetroDECK folder location") set_setting_value $rd_conf "rdhome" "$new_home_path" retrodeck "paths" conf_read diff --git a/retrodeck.sh b/retrodeck.sh index c7447ccb..9b7195aa 100644 --- a/retrodeck.sh +++ b/retrodeck.sh @@ -145,7 +145,7 @@ else if [[ $(check_network_connectivity) == "true" ]]; then finit # Executing First/Force init else - configurator_generic_dialog "You do not appear to be connected to a network with internet access.\n\nThe initial RetroDECK setup requires some files from the internet to function properly.\n\nPlease retry this process once a network connection is available." + configurator_generic_dialog "RetroDECK Setup" "You do not appear to be connected to a network with internet access.\n\nThe initial RetroDECK setup requires some files from the internet to function properly.\n\nPlease retry this process once a network connection is available." exit 1 fi fi diff --git a/tools/configurator.sh b/tools/configurator.sh index 9300b58c..341b13ad 100644 --- a/tools/configurator.sh +++ b/tools/configurator.sh @@ -100,11 +100,11 @@ configurator_reset_dialog() { prepare_emulator "reset" "$emulator_to_reset" "configurator" configurator_process_complete_dialog "resetting $emulator_to_reset" else - configurator_generic_dialog "You do not appear to be connected to a network with internet access.\n\nThe $emulator_to_reset reset process requires some files from the internet to function properly.\n\nPlease retry this process once a network connection is available." + configurator_generic_dialog "RetroDeck Configurator - Reset" "You do not appear to be connected to a network with internet access.\n\nThe $emulator_to_reset reset process requires some files from the internet to function properly.\n\nPlease retry this process once a network connection is available." configurator_reset_dialog fi else - configurator_generic_dialog "Reset process cancelled." + configurator_generic_dialog "RetroDeck Configurator - Reset" "Reset process cancelled." configurator_reset_dialog fi ;; @@ -114,7 +114,7 @@ configurator_reset_dialog() { prepare_emulator "reset" "$emulator_to_reset" "configurator" configurator_process_complete_dialog "resetting $emulator_to_reset" else - configurator_generic_dialog "Reset process cancelled." + configurator_generic_dialog "RetroDeck Configurator - Reset" "Reset process cancelled." configurator_reset_dialog fi ;; @@ -132,11 +132,11 @@ configurator_reset_dialog() { prepare_emulator "reset" "all" configurator_process_complete_dialog "resetting all emulators" else - configurator_generic_dialog "You do not appear to be connected to a network with internet access.\n\nThe all-emulator reset process requires some files from the internet to function properly.\n\nPlease retry this process once a network connection is available." + configurator_generic_dialog "RetroDeck Configurator - Reset" "You do not appear to be connected to a network with internet access.\n\nThe all-emulator reset process requires some files from the internet to function properly.\n\nPlease retry this process once a network connection is available." configurator_reset_dialog fi else - configurator_generic_dialog "Reset process cancelled." + configurator_generic_dialog "RetroDeck Configurator - Reset" "Reset process cancelled." configurator_reset_dialog fi ;; @@ -151,7 +151,7 @@ configurator_reset_dialog() { rm -f "$rd_conf" configurator_process_complete_dialog "resetting RetroDECK" else - configurator_generic_dialog "Reset process cancelled." + configurator_generic_dialog "RetroDeck Configurator - Reset" "Reset process cancelled." configurator_reset_dialog fi ;; @@ -488,15 +488,15 @@ configurator_compress_single_game_dialog() { zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ --title "RetroDECK Configurator Utility - Compression in Progress" - configurator_generic_dialog "The compression process is complete!" + configurator_generic_dialog "RetroDECK Configurator - ROM Compressor" "The compression process is complete!" configurator_compress_games_dialog else - configurator_generic_dialog "The selected file does not have any compatible compressed format." + configurator_generic_dialog "RetroDECK Configurator - ROM Compressor" "The selected file does not have any compatible compressed format." configurator_compress_games_dialog fi else - configurator_generic_dialog "No file selected, returning to main menu" + configurator_generic_dialog "RetroDECK Configurator - ROM Compressor" "No file selected, returning to main menu" configurator_welcome_dialog fi } @@ -601,7 +601,7 @@ configurator_compress_some_games_dialog() { zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --auto-close \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ --title "RetroDECK Configurator Utility - Compression in Progress" - configurator_generic_dialog "The compression process is complete!" + configurator_generic_dialog "RetroDECK Configurator - ROM Compressor" "The compression process is complete!" configurator_compress_games_dialog else configurator_compress_games_dialog @@ -658,10 +658,10 @@ configurator_compress_all_games_dialog() { zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --auto-close \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ --title "RetroDECK Configurator Utility - Compression in Progress" - configurator_generic_dialog "The compression process is complete!" + configurator_generic_dialog "RetroDECK Configurator - ROM Compressor" "The compression process is complete!" configurator_compress_games_dialog else - configurator_generic_dialog "There were no games found that could be compressed." + configurator_generic_dialog "RetroDECK Configurator - ROM Compressor" "There were no games found that could be compressed." fi } @@ -731,13 +731,13 @@ configurator_check_multifile_game_structure() { --title "RetroDECK" \ --text="The following games were found to have the incorrect folder structure:\n\n$(find $roms_folder -maxdepth 2 -mindepth 2 -type d ! -name "*.m3u" ! -name "*.ps3")\n\nIncorrect folder structure can result in failure to launch games or saves being in the incorrect location.\n\nPlease see the RetroDECK wiki for more details!\n\nYou can find this list of games in ~/retrodeck/.logs" else - configurator_generic_dialog "No incorrect multi-file game folder structures found." + configurator_generic_dialog "RetroDECK Configurator - Multi-file Game Structure" "No incorrect multi-file game folder structures found." fi configurator_tools_and_troubleshooting_dialog } configurator_check_bios_files_basic() { - configurator_generic_dialog "This check will look for BIOS files that RetroDECK has identified as working.\n\nThere may be additional BIOS files that will function with the emulators that are not checked.\n\nSome more advanced emulators such as Yuzu will have additional methods for verifiying the BIOS files are in working order." + configurator_generic_dialog "RetroDECK Configurator - Basic BIOS Check" "This check will look for BIOS files that RetroDECK has identified as working.\n\nThere may be additional BIOS files that will function with the emulators that are not checked.\n\nSome more advanced emulators such as Yuzu will have additional methods for verifiying the BIOS files are in working order." bios_checked_list=() while IFS="^" read -r bios_file bios_subdir bios_hash bios_system bios_desc @@ -758,13 +758,13 @@ configurator_check_bios_files_basic() { done < $bios_checklist systems_with_bios=${bios_checked_list[@]} - configurator_generic_dialog "The following systems have been found to have at least one valid BIOS file.\n\n$systems_with_bios\n\nFor more information on the BIOS files found please use the Advanced check tool." + configurator_generic_dialog "RetroDECK Configurator - Basic BIOS Check" "The following systems have been found to have at least one valid BIOS file.\n\n$systems_with_bios\n\nFor more information on the BIOS files found please use the Advanced check tool." configurator_tools_and_troubleshooting_dialog } configurator_check_bios_files_advanced() { - configurator_generic_dialog "This check will look for BIOS files that RetroDECK has identified as working.\n\nNot all BIOS files are required for games to work, please check the BIOS description for more information on its purpose.\n\nThere may be additional BIOS files that will function with the emulators that are not checked.\n\nSome more advanced emulators such as Yuzu will have additional methods for verifiying the BIOS files are in working order." + configurator_generic_dialog "RetroDECK Configurator - Advanced BIOS Check" "This check will look for BIOS files that RetroDECK has identified as working.\n\nNot all BIOS files are required for games to work, please check the BIOS description for more information on its purpose.\n\nThere may be additional BIOS files that will function with the emulators that are not checked.\n\nSome more advanced emulators such as Yuzu will have additional methods for verifiying the BIOS files are in working order." bios_checked_list=() while IFS="^" read -r bios_file bios_subdir bios_hash bios_system bios_desc @@ -843,7 +843,7 @@ configurator_online_theme_downloader() { --no-cancel \ --auto-close - configurator_generic_dialog "The theme downloads and updates have been completed.\n\nYou may need to exit RetroDECK and start it again for the new themes to be available." + configurator_generic_dialog "RetroDECK Configurator - Online Theme Downloader" "The theme downloads and updates have been completed.\n\nYou may need to exit RetroDECK and start it again for the new themes to be available." configurator_tools_and_troubleshooting_dialog else configurator_tools_and_troubleshooting_dialog @@ -851,7 +851,7 @@ configurator_online_theme_downloader() { } configurator_rpcs3_firmware_updater() { - configurator_generic_dialog "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 - RPCS3 Firmware Update" "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." ( update_rpcs3_firmware ) | @@ -903,17 +903,17 @@ configurator_tools_and_troubleshooting_dialog() { if [[ $(check_network_connectivity) == "true" ]]; then configurator_rpcs3_firmware_updater else - configurator_generic_dialog "You do not appear to currently have Internet access, which is required by this tool. Please try again when network access has been restored." + configurator_generic_dialog "RetroDECK Configurator - RPCS3 Firmware Update" "You do not appear to currently have Internet access, which is required by this tool. Please try again when network access has been restored." configurator_tools_and_troubleshooting_dialog fi ;; "Install RetroDECK controller profile" ) - configurator_generic_dialog "Starting with version 0.7.0b, we are 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/RetroDECK_controller_config.vdf" + configurator_generic_dialog "RetroDECK Configurator - Custom Controller Profile" "Starting with version 0.7.0b, we are 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/RetroDECK_controller_config.vdf" if [[ $(configurator_generic_question_dialog "RetroDECK Official Controller Profile" "Would you like to install the official RetroDECK controller profile?") == "true" ]]; then install_retrodeck_controller_profile fi - configurator_generic_dialog "The RetroDECK controller profile install is complete.\nSee the Wiki for more details on how to use it to its fullest potential!" + configurator_generic_dialog "RetroDECK Configurator - Custom Controller Profile" "The RetroDECK controller profile install is complete.\nSee the Wiki for more details on how to use it to its fullest potential!" configurator_tools_and_troubleshooting_dialog ;; @@ -924,7 +924,7 @@ configurator_tools_and_troubleshooting_dialog() { ;; "Backup RetroDECK Userdata" ) - configurator_generic_dialog "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 - Userdata Backup" "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 ) | @@ -933,9 +933,9 @@ configurator_tools_and_troubleshooting_dialog() { --title "RetroDECK Configurator Utility - Backup in Progress" \ --text="Backing up RetroDECK userdata, please wait..." if [[ -f $backups_folder/$(date +"%0m%0d")_retrodeck_userdata.zip ]]; then - configurator_generic_dialog "The backup process is now complete." + configurator_generic_dialog "RetroDECK Configurator - Userdata Backup" "The backup process is now complete." else - configurator_generic_dialog "The backup process could not be completed,\nplease check the logs folder for more information." + configurator_generic_dialog "RetroDECK Configurator - Userdata Backup" "The backup process could not be completed,\nplease check the logs folder for more information." fi configurator_tools_and_troubleshooting_dialog ;; @@ -1176,7 +1176,7 @@ configurator_welcome_dialog() { ;; "Developer Options" ) - configurator_generic_dialog "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 ;; From ae2241523c947944eca5fb4ed7bdb0e234592cd9 Mon Sep 17 00:00:00 2001 From: icenine451 Date: Fri, 5 May 2023 11:18:37 -0400 Subject: [PATCH 3/6] Patch generator upgrades (now handles + signs) Update retrodeck.cfg to latest template in post_update Create new paths in post_update Remove basic BIOS check tool --- functions.sh | 118 ++++++++++++++++++++++++++---------------- post_update.sh | 19 +++---- tools/configurator.sh | 42 ++------------- 3 files changed, 89 insertions(+), 90 deletions(-) diff --git a/functions.sh b/functions.sh index f2b22310..9a64aff7 100644 --- a/functions.sh +++ b/functions.sh @@ -432,9 +432,9 @@ get_setting_value() { esac } -add_setting() { +add_setting_line() { # This function will add a setting line to a file. This is useful for dynamically generated config files where a setting line may not exist until the setting is changed from the default. - # USAGE: add_setting $setting_file $setting_line $system $section (optional) + # USAGE: add_setting_line $setting_file $setting_line $system $section (optional) local current_setting_line=$(sed -e 's^\\^\\\\^g;s^`^\\`^g' <<< "$2") local current_section_name=$(sed -e 's/%/\\%/g' <<< "$4") @@ -443,7 +443,11 @@ add_setting() { * ) if [[ -z $current_section_name ]]; then - sed -i '$ a '"$current_setting_line"'' $1 + if [[ -f "$1" ]]; then + sed -i '$ a '"$current_setting_line"'' $1 + else # If the file doesn't exist, sed add doesn't work for the first line + echo "$current_setting_line" > $1 + fi else sed -i '/^\s*?\['"$current_section_name"'\]|\b'"$current_section_name"':$/a '"$current_setting_line"'' $1 fi @@ -511,12 +515,17 @@ enable_file() { generate_single_patch() { # generate_single_patch $original_file $modified_file $patch_file $system - rm $3 # Remove old patch file (maybe change this to create a backup instead?) + local original_file="$1" + local modified_file="$2" + local patch_file="$3" + local system="$4" + + rm "$patch_file" # Remove old patch file (maybe change this to create a backup instead?) while read -r current_setting_line; # Look for changes from the original file to the modified one do - printf -v escaped_setting_line '%q' "$current_setting_line" # Take care of special characters before they mess with future commands + escaped_setting_line=$(sed -E 's^\+^\\+^g' <<< "$escaped_setting_line") # Need to escape plus signs as well if [[ (! -z $current_setting_line) && (! $current_setting_line == "#!/bin/bash") && (! $current_setting_line == "[]") ]]; then # Ignore empty lines, empty arrays or Bash start lines if [[ ! -z $(grep -o -P "^\[.+?\]$" <<< "$current_setting_line") || ! -z $(grep -o -P "^\b.+?:$" <<< "$current_setting_line") ]]; then # Capture section header lines @@ -529,45 +538,45 @@ generate_single_patch() { fi elif [[ (! -z $current_section) ]]; then # If line is in a section... if [[ ! -z $(grep -o -P "^\s*?#.*?$" <<< "$current_setting_line") ]]; then # Check for disabled lines - if [[ -z $(sed -n -E '\^\['"$current_section"'\]|\b'"$current_section"':$^,\^\s*?'"$(sed -E 's/^[ \t]*//;' <<< "$escaped_setting_line")"'^{ \^\['"$current_section"'\]|\b'"$current_section"':$^! { \^\s*?'"$(sed -E 's/^[ \t]*//' <<< "$escaped_setting_line")"'^ p } }' $2) ]]; then # If disabled line is not disabled in new file... + if [[ -z $(sed -n -E '\^\['"$current_section"'\]|\b'"$current_section"':$^,\^\s*?'"$(sed -E 's/^[ \t]*//;' <<< "$escaped_setting_line")"'^{ \^\['"$current_section"'\]|\b'"$current_section"':$^! { \^\s*?'"$(sed -E 's/^[ \t]*//' <<< "$escaped_setting_line")"'^ p } }' "$modified_file") ]]; then # If disabled line is not disabled in new file... action="disable_setting" - echo $action"^"$current_section"^"$(sed -n -E 's^\s*?#(.*?)$^\1^p' <<< $(sed -E 's/^[ \t]*//' <<< "$current_setting_line")) >> $3 + echo $action"^"$current_section"^"$(sed -n -E 's^\s*?#(.*?)$^\1^p' <<< $(sed -E 's/^[ \t]*//' <<< "$current_setting_line")) >> "$patch_file" fi - elif [[ ! -z $(sed -n -E '\^\['"$current_section"'\]|\b'"$current_section"':$^,\^\s*?#'"$(sed -E 's/^[ \t]*//' <<< "$escaped_setting_line")"'^{ \^\['"$current_section"'\]|\b'"$current_section"':$^! { \^\s*?#'"$(sed -E 's/^[ \t]*//;' <<< "$escaped_setting_line")"'^ p } }' $2) ]]; then # Check if line is disabled in new file + elif [[ ! -z $(sed -n -E '\^\['"$current_section"'\]|\b'"$current_section"':$^,\^\s*?#'"$(sed -E 's/^[ \t]*//' <<< "$escaped_setting_line")"'^{ \^\['"$current_section"'\]|\b'"$current_section"':$^! { \^\s*?#'"$(sed -E 's/^[ \t]*//;' <<< "$escaped_setting_line")"'^ p } }' "$modified_file") ]]; then # Check if line is disabled in new file action="enable_setting" - echo $action"^"$current_section"^"$current_setting_line >> $3 + echo $action"^"$current_section"^"$current_setting_line >> "$patch_file" else # Look for setting value differences - current_setting_name=$(get_setting_name "$escaped_setting_line" $4) - if [[ (-z $(sed -n -E '\^\['"$current_section"'\]|\b'"$current_section"':$^,\^\b'"$current_setting_name"'.*^{ \^\['"$current_section"'\]|\b'"$current_section"':$^! { \^\b'"$(sed -E 's/^[ \t]*//;' <<< "$escaped_setting_line")"'$^ p } }' $2)) ]]; then # If the same setting line is not found in the same section of the modified file... - if [[ ! -z $(sed -n -E '\^\['"$current_section"'\]|\b'"$current_section"':$^,\^\b'"$current_setting_name"'^{ \^\['"$current_section"'\]|\b'"$current_section"':$^! { \^\b'"$current_setting_name"'^ p } }' $2) ]]; then # But the setting exists in that section, only with a different value... - new_setting_value=$(get_setting_value $2 "$current_setting_name" $4 $current_section) + current_setting_name=$(get_setting_name "$escaped_setting_line" "$system") + if [[ (-z $(sed -n -E '\^\['"$current_section"'\]|\b'"$current_section"':$^,\^\b'"$current_setting_name"'\s*?[:=]^{ \^\['"$current_section"'\]|\b'"$current_section"':$^! { \^\b'"$(sed -E 's/^[ \t]*//;' <<< "$escaped_setting_line")"'$^ p } }' "$modified_file")) ]]; then # If the same setting line is not found in the same section of the modified file... + if [[ ! -z $(sed -n -E '\^\['"$current_section"'\]|\b'"$current_section"':$^,\^\b'"$current_setting_name"'\s*?[:=]^{ \^\['"$current_section"'\]|\b'"$current_section"':$^! { \^\b'"$current_setting_name"'\s*?[:=]^ p } }' "$modified_file") ]]; then # But the setting exists in that section, only with a different value... + new_setting_value=$(get_setting_value $2 "$current_setting_name" "$system" $current_section) action="change" - echo $action"^"$current_section"^"$(sed -e 's%\\\\%\\%g' <<< "$current_setting_name")"^"$new_setting_value"^"$4 >> $3 + echo $action"^"$current_section"^"$(sed -e 's%\\\\%\\%g' <<< "$current_setting_name")"^"$new_setting_value"^"$system >> "$patch_file" fi fi fi - elif [[ (-z $current_section) ]]; then # If line is not in a section... + elif [[ -z "$current_section" ]]; then # If line is not in a section... if [[ ! -z $(grep -o -P "^\s*?#.*?$" <<< "$current_setting_line") ]]; then # Check for disabled lines - if [[ -z $(grep -o -P "^\s*?$current_setting_line$" $2) ]]; then # If disabled line is not disabled in new file... + if [[ -z $(grep -o -P "^\s*?$current_setting_line$" "$modified_file") ]]; then # If disabled line is not disabled in new file... action="disable_setting" - echo $action"^"$current_section"^"$(sed -n -E 's^\s*?#(.*?)$^\1^p' <<< "$current_setting_line") >> $3 + echo $action"^"$current_section"^"$(sed -n -E 's^\s*?#(.*?)$^\1^p' <<< "$current_setting_line") >> "$patch_file" fi - elif [[ ! -z $(sed -n -E '\^\s*?#'"$(sed -E 's/^[ \t]*//' <<< "$escaped_setting_line")"'$^p' $2) ]]; then # Check if line is disabled in new file + elif [[ ! -z $(sed -n -E '\^\s*?#'"$(sed -E 's/^[ \t]*//' <<< "$escaped_setting_line")"'$^p' "$modified_file") ]]; then # Check if line is disabled in new file action="enable_setting" - echo $action"^"$current_section"^"$current_setting_line >> $3 + echo $action"^"$current_section"^"$current_setting_line >> "$patch_file" else # Look for setting value differences - if [[ (-z $(sed -n -E '\^\s*?\b'"$(sed -E 's/^[ \t]*//' <<< "$escaped_setting_line")"'$^p' $2)) ]]; then # If the same setting line is not found in the modified file... - current_setting_name=$(get_setting_name "$escaped_setting_line" "$4") - if [[ ! -z $(sed -n -E '\^\s*?\b'"$current_setting_name"'\s*?[:=]^p' $2) ]]; then # But the setting exists, only with a different value... - new_setting_value=$(get_setting_value $2 "$current_setting_name" $4) + if [[ (-z $(sed -n -E '\^\s*?\b'"$(sed -E 's/^[ \t]*//' <<< "$escaped_setting_line")"'$^p' "$modified_file")) ]]; then # If the same setting line is not found in the modified file... + current_setting_name=$(get_setting_name "$escaped_setting_line" "$system") + if [[ ! -z $(sed -n -E '\^\s*?\b'"$current_setting_name"'\s*?[:=]^p' "$modified_file") ]]; then # But the setting exists, only with a different value... + new_setting_value=$(get_setting_value $2 "$current_setting_name" "$system") action="change" - echo $action"^"$current_section"^"$(sed -e 's%\\\\%\\%g' <<< "$current_setting_name")"^"$new_setting_value"^"$4 >> $3 + echo $action"^"$current_section"^"$(sed -e 's%\\\\%\\%g' <<< "$current_setting_name")"^"$new_setting_value"^"$system >> "$patch_file" fi fi fi fi fi - done < $1 + done < "$original_file" # Reset the variables for reuse action="" @@ -585,27 +594,25 @@ generate_single_patch() { if [[ $current_setting_line =~ ^\[.+\] ]]; then # If normal section line action="section" current_section=$(sed 's^[][]^^g' <<< $current_setting_line) # Remove brackets from section name - echo "Section found:" "$current_section""." elif [[ ! -z $(grep -o -P "^\b.+?:$" <<< "$current_setting_line") ]]; then # If RPCS3 section name action="section" current_section=$(sed 's^:$^^' <<< $current_setting_line) # Remove colon from section name - echo "Section found:" "$current_section""." fi elif [[ (! -z $current_section) ]]; then current_setting_name=$(get_setting_name "$escaped_setting_line" "$4") if [[ -z $(sed -n -E '\^\['"$current_section"'\]|\b'"$current_section"':$^,\^\b'"$current_setting_name"'.*^{ \^\['"$current_section"'\]|\b'"$current_section"':$^! { \^\b'"$current_setting_name"'^p } }' $1 ) ]]; then # If setting name is not found in this section of the original file... - action="add_setting" + action="add_setting_line" # TODO: This should include the previous line, so that new lines can be inserted in the correct place rather than at the end. echo $action"^"$current_section"^"$current_setting_line"^^"$4 >> $3 fi elif [[ (-z $current_section) ]]; then current_setting_name=$(get_setting_name "$escaped_setting_line" "$4") if [[ -z $(sed -n -E '\^\s*?\b'"$current_setting_name"'\s*?[:=]^p' $1) ]]; then # If setting name is not found in the original file... - action="add_setting" + action="add_setting_line" # TODO: This should include the previous line, so that new lines can be inserted in the correct place rather than at the end. echo $action"^"$current_section"^"$current_setting_line"^^"$4 >> $3 fi fi fi - done < $2 + done < "$modified_file" } deploy_single_patch() { @@ -628,8 +635,8 @@ do eval enable_file "$setting_name" ;; - "add_setting" ) - eval add_setting $3 "$setting_name" $system_name $current_section + "add_setting_line" ) + eval add_setting_line $3 "$setting_name" $system_name $current_section ;; "disable_setting" ) @@ -641,7 +648,10 @@ do ;; "change" ) - eval set_setting_value $3 "$setting_name" "$setting_value" $system_name $current_section + if [[ "$setting_value" = \$* ]]; then # If patch setting value is a reference to an internal variable name + eval setting_value="$setting_value" + fi + set_setting_value $3 "$setting_name" "$setting_value" $system_name $current_section ;; *"#"* ) @@ -675,8 +685,8 @@ do eval enable_file "$config_file" ;; - "add_setting" ) - eval add_setting "$config_file" "$setting_name" $system_name $current_section + "add_setting_line" ) + eval add_setting_line "$config_file" "$setting_name" $system_name $current_section ;; "disable_setting" ) @@ -688,7 +698,10 @@ do ;; "change" ) - eval set_setting_value "$config_file" "$setting_name" "$setting_value" $system_name $current_section + if [[ "$setting_value" = \$* ]]; then # If patch setting value is a reference to an internal variable name + eval setting_value="$setting_value" + fi + set_setting_value "$config_file" "$setting_name" "$setting_value" $system_name $current_section ;; *"#"* ) @@ -788,10 +801,21 @@ update_rd_conf() { # This function will import a default retrodeck.cfg file and update it with any current settings. This will allow us to expand the file over time while retaining current user settings. # USAGE: update_rd_conf + # STAGE 1: For current files that haven't been broken into sections yet, where every setting name is unique + conf_read # Read current settings into memory mv -f $rd_conf $rd_conf_backup # Backup config file before update cp $rd_defaults $rd_conf # Copy defaults file into place conf_write # Write old values into new default file + + # STAGE 2: To handle feature sections that use duplicate setting names + + mv -f $rd_conf $rd_conf_backup # Backup config file agiain before update but after Stage 1 expansion + generate_single_patch $rd_defaults $rd_conf_backup $rd_update_patch retrodeck # Create a patch file for differences between defaults and current user settings + sed -i '/change^^version/d' $rd_update_patch # Remove version line from temporary patch file + deploy_single_patch $rd_defaults $rd_update_patch $rd_conf # Re-apply user settings to defaults file + set_setting_value $rd_conf "version" "$hard_version" retrodeck # Set version of currently running RetroDECK to updated retrodeck.cfg + rm -f $rd_update_patch # Cleanup temporary patch file conf_read # Read all settings into memory } @@ -1071,11 +1095,13 @@ conf_write() { if [[ ! -z $(grep -o -P "^\[.+?\]$" <<< "$current_setting_line") ]]; then # If the line is a section header local current_section=$(sed 's^[][]^^g' <<< $current_setting_line) # Remove brackets from section name else - local current_setting_name=$(get_setting_name "$current_setting_line" "retrodeck") # Read the variable name from the current line - local current_setting_value=$(get_setting_value "$rd_conf" "$current_setting_name" "retrodeck" "$current_section") # Read the variables value from retrodeck.cfg - local memory_setting_value=$(eval "echo \$${current_setting_name}") # Read the variable names' value from memory - if [[ ! "$current_setting_value" == "$memory_setting_value" ]]; then # If the values are different... - set_setting_value "$rd_conf" "$current_setting_name" "$memory_setting_value" "retrodeck" "$current_section" # Update the value in retrodeck.cfg + if [[ "$current_section" == "" || "$current_section" == "paths" || "$current_section" == "options" ]]; then + local current_setting_name=$(get_setting_name "$current_setting_line" "retrodeck") # Read the variable name from the current line + local current_setting_value=$(get_setting_value "$rd_conf" "$current_setting_name" "retrodeck" "$current_section") # Read the variables value from retrodeck.cfg + local memory_setting_value=$(eval "echo \$${current_setting_name}") # Read the variable names' value from memory + if [[ ! "$current_setting_value" == "$memory_setting_value" && ! -z "$memory_setting_value" ]]; then # If the values are different... + set_setting_value "$rd_conf" "$current_setting_name" "$memory_setting_value" "retrodeck" "$current_section" # Update the value in retrodeck.cfg + fi fi fi fi @@ -1092,9 +1118,11 @@ conf_read() { if [[ ! -z $(grep -o -P "^\[.+?\]$" <<< "$current_setting_line") ]]; then # If the line is a section header local current_section=$(sed 's^[][]^^g' <<< $current_setting_line) # Remove brackets from section name else - local current_setting_name=$(get_setting_name "$current_setting_line" "retrodeck") # Read the variable name from the current line - local current_setting_value=$(get_setting_value "$rd_conf" "$current_setting_name" "retrodeck" "$current_section") # Read the variables value from retrodeck.cfg - eval "$current_setting_name=$current_setting_value" # Write the current setting name and value to memory + if [[ "$current_section" == "" || "$current_section" == "paths" || "$current_section" == "options" ]]; then + local current_setting_name=$(get_setting_name "$current_setting_line" "retrodeck") # Read the variable name from the current line + local current_setting_value=$(get_setting_value "$rd_conf" "$current_setting_name" "retrodeck" "$current_section") # Read the variables value from retrodeck.cfg + eval "$current_setting_name=$current_setting_value" # Write the current setting name and value to memory + fi fi fi done < $rd_conf @@ -1814,9 +1842,11 @@ install_retrodeck_starterpack() { install_retrodeck_controller_profile() { # This function will install the needed files for the custom RetroDECK controller profile # NOTE: These files need to be stored in shared locations for Steam, outside of the normal RetroDECK folders and should always be an optional user choice + # BIGGER NOTE: As part of this process, all emulators have their configs hard-reset to match the controller mappings of the profile # USAGE: install_retrodeck_controller_profile rsync -a "/app/retrodeck/binding-icons/" "$HOME/.steam/steam/tenfoot/resource/images/library/controller/binding_icons/" cp -f "$emuconfigs/defaults/retrodeck/RetroDECK_controller_config.vdf" "$HOME/.steam/steam/controller_base/templates/RetroDECK_controller_config.vdf" + prepare_emulator "all" "reset" } create_lock() { diff --git a/post_update.sh b/post_update.sh index da5dcf81..019350cc 100644 --- a/post_update.sh +++ b/post_update.sh @@ -69,19 +69,26 @@ post_update() { fi if [[ $prev_version -le "070" ]]; then # In version 0.7.0b, the following changes were made that required config file updates/reset or other changes to the filesystem: + # - Update retrodeck.cfg and set new paths to $rdhome by default # - New ~/retrodeck/mods and ~/retrodeck/texture_packs directories are added and symlinked to multiple different emulators (where supported) # - Expose ES-DE gamelists folder to user at ~/retrodeck/gamelists - # - Add new sections [paths] and [options] headers to retrodeck.cfg - # - Prepackaged DOOM! # - Update RPCS3 vfs file contents. migrate from old location if needed # - Disable ESDE update checks for existing installs # - Move Duckstation saves and states to new locations # - Clean up legacy tools files (Configurator is now accessible through the main ES-DE menu) # - Move Dolphin and Primehack save folder names - # - Offer user option of installing custom controller config + + update_rd_conf # Expand retrodeck.cfg to latest template + set_setting_value $rd_conf "screenshots_folder" "$rdhome/screenshots" + set_setting_value $rd_conf "mods_folder" "$rdhome/mods" + set_setting_value $rd_conf "texture_packs_folder" "$rdhome/texture_packs" + set_setting_value $rd_conf "borders_folder" "$rdhome/borders" + conf_read mkdir -p "$mods_folder" mkdir -p "$texture_packs_folder" + mkdir -p "$borders_folder" + dir_prep "$mods_folder/Primehack" "/var/data/primehack/Load/GraphicMods" dir_prep "$texture_packs_folder/Primehack" "/var/data/primehack/Load/Textures" dir_prep "$mods_folder/Dolphin" "/var/data/dolphin-emu/Load/GraphicMods" @@ -146,11 +153,6 @@ post_update() { dir_prep "$saves_folder/gc/primehack/EU" "/var/data/primehack/GC/EUR" dir_prep "$saves_folder/gc/primehack/US" "/var/data/primehack/GC/USA" dir_prep "$saves_folder/gc/primehack/JP" "/var/data/primehack/GC/JAP" - - configurator_generic_dialog "RetroDECK 0.7.0b Upgrade" "As part of this update, we are 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.\nIf you decide to not install the profile now, it can always be done later through the Configurator.\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/RetroDECK_controller_config.vdf" - if [[ $(configurator_generic_question_dialog "RetroDECK Official Controller Profile" "Would you like to install the official RetroDECK controller profile?") == "true" ]]; then - install_retrodeck_controller_profile - fi fi # The following commands are run every time. @@ -163,7 +165,6 @@ post_update() { fi update_splashscreens - update_rd_conf ) | zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ diff --git a/tools/configurator.sh b/tools/configurator.sh index 341b13ad..a002f62f 100644 --- a/tools/configurator.sh +++ b/tools/configurator.sh @@ -736,35 +736,8 @@ configurator_check_multifile_game_structure() { configurator_tools_and_troubleshooting_dialog } -configurator_check_bios_files_basic() { - configurator_generic_dialog "RetroDECK Configurator - Basic BIOS Check" "This check will look for BIOS files that RetroDECK has identified as working.\n\nThere may be additional BIOS files that will function with the emulators that are not checked.\n\nSome more advanced emulators such as Yuzu will have additional methods for verifiying the BIOS files are in working order." - bios_checked_list=() - - while IFS="^" read -r bios_file bios_subdir bios_hash bios_system bios_desc - do - bios_file_found="No" - bios_hash_matched="No" - if [[ -f "$bios_folder/$bios_subdir$bios_file" ]]; then - bios_file_found="Yes" - if [[ $bios_hash == "Unknown" ]]; then - bios_hash_matched="Unknown" - elif [[ $(md5sum "$bios_folder/$bios_subdir$bios_file" | awk '{ print $1 }') == "$bios_hash" ]]; then - bios_hash_matched="Yes" - fi - fi - if [[ $bios_file_found == "Yes" && ($bios_hash_matched == "Yes" || $bios_hash_matched == "Unknown") && ! " ${bios_checked_list[*]} " =~ " ${bios_system} " ]]; then - bios_checked_list=("${bios_checked_list[@]}" "$bios_system" ) - fi - done < $bios_checklist - systems_with_bios=${bios_checked_list[@]} - - configurator_generic_dialog "RetroDECK Configurator - Basic BIOS Check" "The following systems have been found to have at least one valid BIOS file.\n\n$systems_with_bios\n\nFor more information on the BIOS files found please use the Advanced check tool." - - configurator_tools_and_troubleshooting_dialog -} - -configurator_check_bios_files_advanced() { - configurator_generic_dialog "RetroDECK Configurator - Advanced BIOS Check" "This check will look for BIOS files that RetroDECK has identified as working.\n\nNot all BIOS files are required for games to work, please check the BIOS description for more information on its purpose.\n\nThere may be additional BIOS files that will function with the emulators that are not checked.\n\nSome more advanced emulators such as Yuzu will have additional methods for verifiying the BIOS files are in working order." +configurator_check_bios_files() { + configurator_generic_dialog "RetroDECK Configurator - BIOS File Check" "This check will look for BIOS files that RetroDECK has identified as working.\n\nNot all BIOS files are required for games to work, please check the BIOS description for more information on its purpose.\n\nThere may be additional BIOS files that will function with the emulators that are not checked.\n\nSome more advanced emulators such as Yuzu will have additional methods for verifiying the BIOS files are in working order." bios_checked_list=() while IFS="^" read -r bios_file bios_subdir bios_hash bios_system bios_desc @@ -869,8 +842,7 @@ configurator_tools_and_troubleshooting_dialog() { --column="Choice" --column="Action" \ "Move RetroDECK Folders" "Move RetroDECK folders between internal/SD card or to a custom location" \ "Multi-file game structure check" "Verify the proper structure of multi-file or multi-disc games" \ - "Basic BIOS file check" "Show a list of systems that BIOS files are found for" \ - "Advanced BIOS file check" "Show advanced information about common BIOS files" \ + "BIOS file check" "Show information about common BIOS files" \ "Compress Games" "Compress games to CHD format for systems that support it" \ "Download PS3 Firmware" "Download PS3 firmware for use with the RPCS3 emulator" \ "Install RetroDECK controller profile" "Install the custom RetroDECK controller profile and required icons" \ @@ -887,12 +859,8 @@ configurator_tools_and_troubleshooting_dialog() { configurator_check_multifile_game_structure ;; - "Basic BIOS file check" ) - configurator_check_bios_files_basic - ;; - - "Advanced BIOS file check" ) - configurator_check_bios_files_advanced + "BIOS file check" ) + configurator_check_bios_files ;; "Compress Games" ) From dc94e3b3c1b8bd3826aeb1e1f1f9e5b394219048 Mon Sep 17 00:00:00 2001 From: icenine451 Date: Fri, 5 May 2023 12:27:31 -0400 Subject: [PATCH 4/6] set_setting_value upgrade (handles similarly-named settings better) Add PCSX2 and Duckstation config upgrades to post_update --- functions.sh | 6 +++--- post_update.sh | 10 ++++++++++ rd-submodules/retroarch | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/functions.sh b/functions.sh index 9a64aff7..5402b7ba 100644 --- a/functions.sh +++ b/functions.sh @@ -323,7 +323,7 @@ set_setting_value() { if [[ -z $current_section_name ]]; then sed -i 's^\^'"$setting_name_to_change"'=.*^'"$setting_name_to_change"'='"$setting_value_to_change"'^' $1 else - sed -i '\^\['"$current_section_name"'\]^,\^\^'"$setting_name_to_change"'.*^s^\^'"$setting_name_to_change"'=.*^'"$setting_name_to_change"'='"$setting_value_to_change"'^' $1 + sed -i '\^\['"$current_section_name"'\]^,\^\^'"$setting_name_to_change"'=^s^\^'"$setting_name_to_change"'=.*^'"$setting_name_to_change"'='"$setting_value_to_change"'^' $1 fi if [[ "$4" == "retrodeck" ]]; then # If a RetroDECK setting is being changed, also write it to memory for immediate use eval "$setting_name_to_change=$setting_value_to_change" @@ -334,7 +334,7 @@ set_setting_value() { if [[ -z $current_section_name ]]; then sed -i 's^\^'"$setting_name_to_change"' = \".*\"^'"$setting_name_to_change"' = \"'"$setting_value_to_change"'\"^' $1 else - sed -i '\^\['"$current_section_name"'\]^,\^\^'"$setting_name_to_change"'.*^s^\^'"$setting_name_to_change"' = \".*\"^'"$setting_name_to_change"' = \"'"$setting_value_to_change"'\"^' $1 + sed -i '\^\['"$current_section_name"'\]^,\^\^'"$setting_name_to_change"' = ^s^\^'"$setting_name_to_change"' = \".*\"^'"$setting_name_to_change"' = \"'"$setting_value_to_change"'\"^' $1 fi ;; @@ -342,7 +342,7 @@ set_setting_value() { if [[ -z $current_section_name ]]; then sed -i 's^\^'"$setting_name_to_change"' =.*^'"$setting_name_to_change"' = '"$setting_value_to_change"'^' $1 else - sed -i '\^\['"$current_section_name"'\]^,\^\^'"$setting_name_to_change"'.*^s^\^'"$setting_name_to_change"' =.*^'"$setting_name_to_change"' = '"$setting_value_to_change"'^' $1 + sed -i '\^\['"$current_section_name"'\]^,\^\^'"$setting_name_to_change"' =^s^\^'"$setting_name_to_change"' =.*^'"$setting_name_to_change"' = '"$setting_value_to_change"'^' $1 fi ;; diff --git a/post_update.sh b/post_update.sh index 019350cc..e256beae 100644 --- a/post_update.sh +++ b/post_update.sh @@ -70,6 +70,7 @@ post_update() { if [[ $prev_version -le "070" ]]; then # In version 0.7.0b, the following changes were made that required config file updates/reset or other changes to the filesystem: # - Update retrodeck.cfg and set new paths to $rdhome by default + # - Update PCSX2 and Duckstation configs to latest templates (to accomadate RetroAchievements feature) # - New ~/retrodeck/mods and ~/retrodeck/texture_packs directories are added and symlinked to multiple different emulators (where supported) # - Expose ES-DE gamelists folder to user at ~/retrodeck/gamelists # - Update RPCS3 vfs file contents. migrate from old location if needed @@ -85,6 +86,15 @@ post_update() { set_setting_value $rd_conf "borders_folder" "$rdhome/borders" conf_read + mv -f "$pcsx2qtconf" "$pcsx2qtconf.bak" + generate_single_patch "$emuconfigs/PCSX2/PCSX2.ini" "$pcsx2qtconf.bak" "/var/config/PCSX2/inis/PCSX2-cheevos-upgrade.patch" pcsx2 + deploy_single_patch "$emuconfigs/PCSX2/PCSX2.ini" "/var/config/PCSX2/inis/PCSX2-cheevos-upgrade.patch" "$pcsx2qtconf" + rm -f "/var/config/PCSX2/inis/PCSX2-cheevos-upgrade.patch" + mv -f "$duckstationconf" "$duckstationconf.bak" + generate_single_patch "$emuconfigs/duckstation/settings.ini" "$duckstationconf.bak" "/var/data/duckstation/duckstation-cheevos-upgrade.patch" pcsx2 + deploy_single_patch "$emuconfigs/duckstation/settings.ini" "/var/data/duckstation/duckstation-cheevos-upgrade.patch" "$duckstationconf" + rm -f "/var/data/duckstation/duckstation-cheevos-upgrade.patch" + mkdir -p "$mods_folder" mkdir -p "$texture_packs_folder" mkdir -p "$borders_folder" diff --git a/rd-submodules/retroarch b/rd-submodules/retroarch index 717b7809..0b1cfb79 160000 --- a/rd-submodules/retroarch +++ b/rd-submodules/retroarch @@ -1 +1 @@ -Subproject commit 717b78093797270877ec416e58082f1c71d435d8 +Subproject commit 0b1cfb79e591e10488a3262d6b38db843c39a409 From e527f85ca66127cd94c30dff1cb16ace597ac8c1 Mon Sep 17 00:00:00 2001 From: icenine451 Date: Fri, 5 May 2023 16:20:49 -0400 Subject: [PATCH 5/6] Update pre-build automation Now information can be read from the general server environment to inject into the flatpak manifest --- .github/workflows/cooker-selfhosted.yml | 2 +- automation_tools/automation_task_list.cfg | 1 + automation_tools/pre_build_automation.sh | 9 +++++++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cooker-selfhosted.yml b/.github/workflows/cooker-selfhosted.yml index 1465112e..c68993d4 100644 --- a/.github/workflows/cooker-selfhosted.yml +++ b/.github/workflows/cooker-selfhosted.yml @@ -39,7 +39,7 @@ jobs: word2=$(curl -s https://random-word-api.herokuapp.com/word?length=5 | tr -d '[]"') capitalized_word2="$(tr '[:lower:]' '[:upper:]' <<< ${word2:0:1})${word2:1}" result=$capitalized_word1$capitalized_word2 - echo $result >> ${GITHUB_WORKSPACE}/buildid + echo $result > ${GITHUB_WORKSPACE}/buildid ls -lah ${GITHUB_WORKSPACE} # DEBUG cat ${GITHUB_WORKSPACE}/buildid # DEBUG echo "buildid=$result" >> $GITHUB_ENV diff --git a/automation_tools/automation_task_list.cfg b/automation_tools/automation_task_list.cfg index f3001422..2c28ed28 100644 --- a/automation_tools/automation_task_list.cfg +++ b/automation_tools/automation_task_list.cfg @@ -4,3 +4,4 @@ hash^DOOMSHAPLACEHOLDER^https://buildbot.libretro.com/assets/cores/DOOM/Doom%20% hash^VITASHAPLACEHOLDER^https://github.com/Vita3K/Vita3K/releases/download/continuous/ubuntu-latest.zip hash^DUCKSTATIONSHAPLACEHOLDER^https://github.com/stenzek/duckstation/releases/download/preview/DuckStation-x64.AppImage latestcommit^UNIVERSALDYNAMICINPUTCOMMITPLACEHOLDER^https://github.com/Venomalia/UniversalDynamicInput^main +outside_info^VERSIONPLACEHOLDER^${GITHUB_WORKSPACE}/buildid diff --git a/automation_tools/pre_build_automation.sh b/automation_tools/pre_build_automation.sh index b02225c4..637c3f95 100644 --- a/automation_tools/pre_build_automation.sh +++ b/automation_tools/pre_build_automation.sh @@ -53,6 +53,15 @@ do appimagehash=$(curl -sL "$appimageurl" | sha256sum | cut -d ' ' -f1) echo "AppImage hash found: $appimagehash" /bin/sed -i 's^'"HASHFOR$placeholder"'^'"$appimagehash"'^' $rd_manifest + elif [[ "$action" == "outside_info" ]]; then + if [[ "$url" = \$* ]]; then # If value is a reference to a variable name + eval url="$url" + fi + echo + echo "Placeholder text: $placeholder" + echo "Information being injected: $(cat $url)" + echo + /bin/sed -i 's^'"$placeholder"'^'"$(cat $url)"'^' $rd_manifest fi fi done < "$automation_task_list" From 70692c65197365b4576bdd7b12eb6d3a79315bac Mon Sep 17 00:00:00 2001 From: icenine451 Date: Fri, 5 May 2023 16:21:44 -0400 Subject: [PATCH 6/6] Add version tag placeholder to manifest --- net.retrodeck.retrodeck.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index 7d4506ad..02dec7c7 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -78,7 +78,7 @@ modules: mkdir -p ${FLATPAK_DEST}/retrodeck/ if [[ $VERSION == *"cooker"* ]]; then - VERSION="$VERSION[$(cat ./buildid)]" + VERSION="$VERSION[VERSIONPLACEHOLDER]" fi echo $VERSION >> ${FLATPAK_DEST}/retrodeck/version cat ${FLATPAK_DEST}/retrodeck/version