diff --git a/retrodeck.sh b/retrodeck.sh index 374eff4f..5f60f394 100644 --- a/retrodeck.sh +++ b/retrodeck.sh @@ -264,6 +264,8 @@ post_update() { standalones_init tools_init + # Perform save and state migration if needed + versionwheresaveschanged="0.4.5b" # Hardcoded break point between unsorted and sorted saves if [[ $(sed -e "s/\.//g" <<< $hard_version) > $(sed -e "s/\.//g" <<< $versionwheresaveschanged) ]] && [[ ! $(sed -e "s/\.//g" <<< $hard_version) == $(sed -e "s/\.//g" <<< $version) ]]; then # Check if user is upgrading from the version where save organization was changed. Try not to reuse this, it things 0.4.5b is newer than 0.4.5 @@ -297,7 +299,7 @@ post_update() { ( movefile() { # Take matching save and rom files and sort save into appropriate system folder - echo "# $filesleft files remaining..." # These lines update the Zenity progress bar + echo "# $filesleft $currentlybeingmoved remaining..." # These lines update the Zenity progress bar progress=$(( 100 - (( 100 / "$totalfiles" ) * "$filesleft" ))) echo $progress filesleft=$((filesleft-1)) @@ -314,14 +316,16 @@ post_update() { echo "INFO: Examining ROM file:" "$game" >> $migration_logfile echo "INFO: System detected as" $systemdir >> $migration_logfile sosfile=$(sed -e "s/\^/ /g" <<< "$2") # Remove whitespace placeholder from s-ave o-r s-tate file - sosbasename="$(basename "$save")" # 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 echo "INFO: 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 if [[ ! -d $current_dest_folder"/"$systemdir ]]; then # If system directory doesn't exist for save yet, create it - mkdir $current_dest_folder"/"$systemdir + echo "WARNING: Creating missing system directory" $current_dest_folder"/"$systemdir + mkdir $current_dest_folder/$systemdir fi - mv \'$sosfile\' $current_dest_folder"/"$systemdir\/\'$sosbasename\' # Move save to appropriate system directory + mv "$sosfile" -t $current_dest_folder/$systemdir # Move save to appropriate system directory + return 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 fi @@ -330,7 +334,8 @@ post_update() { find "$roms_folder" -mindepth 2 -maxdepth 2 -name "*\^*" -exec echo "ERROR: Game named" {} "found, please move save manually" \; >> $migration_logfile # Warn user if any of their files have the whitespace replacement character used by the script totalfiles=$totalsaves #set variables for save file migration - filesleft=$totalsaves + filesleft=$totalsaves + currentlybeingmoved="saves" current_dest_folder=$saves_folder for i in "${allsaves[@]}"; do # For each save file, compare to every ROM file name looking for a match @@ -344,7 +349,8 @@ post_update() { done totalfiles=$totalstates #set variables for state file migration - filesleft=$totalstates + filesleft=$totalstates + currentlybeingmoved="states" current_dest_folder=$states_folder for i in "${allstates[@]}"; do # For each state file, compare to every ROM file name looking for a match