2024-05-30 14:54:29 +00:00
#!/bin/bash
2024-05-30 21:12:54 +00:00
find_empty_rom_folders( ) {
# This function will build an array of all the system subfolders in $roms_folder which are either empty or contain only systeminfo.txt for easy removal
if [ [ -f " $godot_empty_roms_folders " ] ] ; then
rm -f " $godot_empty_roms_folders " # Godot data transfer temp files
fi
touch " $godot_empty_roms_folders "
empty_rom_folders_list = ( )
all_empty_folders = ( )
2024-06-21 14:30:30 +00:00
2024-08-15 14:42:40 +00:00
# Extract helper file names using jq and populate the all_helper_files array
all_helper_files = ( $( jq -r '.helper_files | to_entries | .[] | .value.filename' " $features " ) )
2024-05-30 21:12:54 +00:00
for system in $( find " $roms_folder " -mindepth 1 -maxdepth 1 -type d -printf '%f\n' )
do
local dir = " $roms_folder / $system "
local files = $( ls -A1 " $dir " )
local count = $( ls -A " $dir " | wc -l)
if [ [ $count -eq 0 ] ] ; then
# Directory is empty
empty_rom_folders_list = ( " ${ empty_rom_folders_list [@] } " "false" " $( realpath $dir ) " )
all_empty_folders = ( " ${ all_empty_folders [@] } " " $( realpath $dir ) " )
echo " $( realpath $dir ) " >> " $godot_empty_roms_folders " # Godot data transfer temp file
elif [ [ $count -eq 1 ] ] && [ [ " $( basename " ${ files [0] } " ) " = = "systeminfo.txt" ] ] ; then
# Directory contains only systeminfo.txt
empty_rom_folders_list = ( " ${ empty_rom_folders_list [@] } " "false" " $( realpath $dir ) " )
all_empty_folders = ( " ${ all_empty_folders [@] } " " $( realpath $dir ) " )
echo " $( realpath $dir ) " >> " $godot_empty_roms_folders " # Godot data transfer temp file
2024-06-21 14:30:30 +00:00
elif [ [ $count -eq 2 ] ] && [ [ " $files " = ~ "systeminfo.txt" ] ] ; then
2024-08-15 14:42:40 +00:00
contains_helper_file = "false"
for helper_file in " ${ all_helper_files [@] } " # Compare helper file list to dir file list
2024-06-21 14:30:30 +00:00
do
if [ [ " $files " = ~ " $helper_file " ] ] ; then
contains_helper_file = "true" # Helper file was found
break
fi
done
if [ [ " $contains_helper_file " = = "true" ] ] ; then
# Directory contains only systeminfo.txt and a helper file
empty_rom_folders_list = ( " ${ empty_rom_folders_list [@] } " "false" " $( realpath $dir ) " )
all_empty_folders = ( " ${ all_empty_folders [@] } " " $( realpath $dir ) " )
echo " $( realpath $dir ) " >> " $godot_empty_roms_folders " # Godot data transfer temp file
fi
2024-05-30 21:12:54 +00:00
fi
done
}
2024-08-15 14:42:40 +00:00
2025-02-27 16:00:51 +00:00
configurator_check_multifile_game_structure( ) {
local folder_games = ( $( find $roms_folder -maxdepth 2 -mindepth 2 -type d ! -name "*.m3u" ! -name "*.ps3" ) )
if [ [ ${# folder_games [@] } -gt 1 ] ] ; then
echo " $( find $roms_folder -maxdepth 2 -mindepth 2 -type d ! -name "*.m3u" ! -name "*.ps3" ) " > $logs_folder /multi_file_games_" $( date +"%Y_%m_%d_%I_%M_%p" ) .log "
rd_zenity --icon-name= net.retrodeck.retrodeck --info --no-wrap \
--window-icon= "/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK Configurator - Verify Multi-file Structure" \
--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 "RetroDECK Configurator - Verify Multi-file Structure" "No incorrect multi-file game folder structures found."
fi
configurator_welcome_dialog
}