From 2e94f088e57dc2c5bde2aab8a5a75e148d5bff6b Mon Sep 17 00:00:00 2001 From: Eric Ostrowski Date: Sat, 16 Mar 2019 13:24:08 -0500 Subject: [PATCH] Fixed issues reading XML and creating filters --- emulator_settings.xml | 2 +- rclone_script.sh | 69 +++++++++++++++++++++++++++---------------- 2 files changed, 44 insertions(+), 27 deletions(-) diff --git a/emulator_settings.xml b/emulator_settings.xml index d893dc7..ef79359 100644 --- a/emulator_settings.xml +++ b/emulator_settings.xml @@ -1,7 +1,7 @@ - ppsspp + lr-ppsspp /opt/retropie/configs/psp/PSP/SAVEDATA /opt/retropie/configs/psp/PSP/PPSSPP_STATE diff --git a/rclone_script.sh b/rclone_script.sh index c7d6364..0ce7218 100644 --- a/rclone_script.sh +++ b/rclone_script.sh @@ -143,38 +143,54 @@ function prepareFilter () } # Builds a filter compatible with Find -function prepareLocalFilter () +function prepareSaveFilters () { - # Create an array of save file extensions - read -a exts <<< $(xmlstarlet sel -t -m "emulators/emulator[name='${emulator}']/saveFileExtensions" -v . "${emu_settings}") - - # If any custom save file extensions are defined - if [ ${#exts[@]} -gt 0 ] + log 3 "emu_settings: ${emu_settings}" + + # Read in any extensions + extensions=$(xmlstarlet sel -t -m "emulators/emulator[name='${emulator}']/saveFileExtensions" -v "ext" "${emu_settings}") + + # If no extensions were defined + if [ -z "${extensions// }" ] then - # Build the filter for the extensions - log 3 "Custom save extentions defined for emulator: ${emulator}" - localFilter="\( -iname '*.${exts[0]}'" - for ext in ${exts[@]:1}; do - localFilter="${localFilter} -o -iname '*.${ext}'" - done - localFilter="${localFilter} \)" - else - # Otherwise, default to ".*" + + # Default to ".*" localFilter="${romfilebase//\[/\\[}" localFilter="${localFilter//\]/\\]}" + remoteFilter="${localFilter}" + + else + + # Otherwise, build custom filters + log 3 "Custom save extentions defined for emulator: ${emulator}" + i=0 + + # Build the filters for the extensions + while read ext; do + + if [ "${i}" -eq "0" ] + then + + remoteFilter="{*.${ext}" + localFilter="\( -iname '*.${ext}'" + ((i++)) + + else + + localFilter="${localFilter} -o -iname '*.${ext}'" + remoteFilter="${remoteFilter}, *.${ext}" + + fi + + done <<< ${extensions} + + localFilter="${localFilter} \)" + remoteFilter="${remoteFilter}}" + fi log 3 "Local save file filter: ${localFilter}" -} - -function prepareRemoteFilter () -{ - -} - -function getSavePathForEmulator () -{ - + log 3 "Remote save file filter: ${remoteFilter}" } function getTypeOfRemote () @@ -388,7 +404,7 @@ log 3 "romfileext: ${romfileext}" if [ "${direction}" == "up" ] && [ "${system}" != "kodi" ] then getROMFileName - prepareLocalFilter + prepareSaveFilters prepareFilter getTypeOfRemote uploadSaves @@ -397,6 +413,7 @@ fi if [ "${direction}" == "down" ] && [ "${system}" != "kodi" ] then getROMFileName + prepareSaveFilters prepareFilter getTypeOfRemote downloadSaves