mirror of
https://github.com/dragoonDorise/EmuDeck.git
synced 2025-05-05 16:02:48 +00:00
* new paths * / * EmuDeck/ * mv * no & * ESDE new location * ESDE new path * no symlink load * bigpemu new path * force move * global vars * oopsie * missing $emudeckBackend * better migration detection * Keep Appimages in Applications * Keep Appimages in Applications
129 lines
5.8 KiB
Bash
129 lines
5.8 KiB
Bash
#!/bin/bash
|
|
migrateAndLinkConfig(){
|
|
|
|
emu=$1
|
|
migrationTable=$2
|
|
#step 1 should be attempt to unlink everything that gets passed in so we can start fresh.
|
|
#for path in $migrationTable[@]
|
|
#do
|
|
# if [ -L $path ]; then
|
|
# echo unlinking $path
|
|
# unlink $path
|
|
# fi
|
|
#done
|
|
migrationFlag="$emudeckFolder/.${emu}MigrationCompleted"
|
|
|
|
#check if we have a nomigrateflag for $emu
|
|
if [ ! -f "$migrationFlag" ]; then
|
|
#ask user before migrating data
|
|
# text="`printf "We would like to migrate data from the flatpak to the AppImage for ${emu}. \
|
|
# \nThe AppImage version should perform better than the one you already have\nNew directories for this emulator will be made, and config changes will point to these new folders regardless of this choice.\
|
|
# \nYou should allow this migration if you want to move your flatpak data and config to it's new home. \
|
|
# \nIf you would like to move your files manually, you may decline.
|
|
# \nDon't forget to run Steam ROM Manager to update your games for ${emu}"`"
|
|
# doMigrate=$(zenity --info --title "Migrate "${emu}" Data?" \
|
|
# --text="${text}" \
|
|
# --width=300 \
|
|
# --ok-label "Leave ${emu} alone this time" \
|
|
# --extra-button "Leave ${emu} alone forever" \
|
|
# --extra-button "Migrate Data" 2>/dev/null)
|
|
# rc=$?
|
|
|
|
doMigrate="Migrate Data"
|
|
|
|
echo "$emu Do migration? User chose: $doMigrate"
|
|
if [ "$doMigrate" == "Migrate Data" ]; then
|
|
n=$(( ${#migrationTable[@]} - 1 ))
|
|
#odd should be flatpak
|
|
#even should be appimage
|
|
#determine plan based on first pair
|
|
if [[ ! -e ${migrationTable[0]} ]]; then
|
|
#no flatpak data. nothing to do. (or should we link it?)
|
|
echo "No flatpak data found, continuing."
|
|
elif [[ -L ${migrationTable[0]} && -L ${migrationTable[1]} ]]; then
|
|
echo "Both sides of migration are symlinks. Stopping migration. User needs to manually resolve."
|
|
elif [[ -d ${migrationTable[0]} && -d ${migrationTable[1]} ]]; then
|
|
#both locations exist
|
|
#ask user which to keep
|
|
text="`printf "Data was found for both the appimage and flatpak for ${emu}.\nWe will be using the AppImage from now on.\nPlease choose which data to keep.\nThe AppImage version should perform better than the one you already have\nDo not forget to run Steam ROM Manager to update your games for ${emu}"`"
|
|
ans=$(zenity --info --title "Migrate "${emu}" Data?" \
|
|
--text="${text}" \
|
|
--width=300 \
|
|
--ok-label "Don't do anything with my stuff" \
|
|
--extra-button "Keep AppImage Data" \
|
|
--extra-button "Migrate Flatpak Data" 2>/dev/null)
|
|
rc=$?
|
|
if [[ ! $ans == "" ]]; then #user didn't cancel
|
|
echo "$emu flatpak/appimage data choice. User Chose: $ans"
|
|
for ((i=0; i<=n; i=(i+2))) { # for each pair of dirs
|
|
|
|
if [[ $ans == "Migrate Flatpak Data" ]]; then
|
|
fromDir=${migrationTable[i]}
|
|
toDir=${migrationTable[i+1]}
|
|
echo "Migrating ${fromDir} to ${toDir}"
|
|
#in case the destination is a symlink
|
|
if [[ -L $toDir ]]; then
|
|
unlink ${toDir}
|
|
echo ${toDir}" is a symlink. Unlinked."
|
|
else
|
|
#backup destination location, delete it, then sync original over
|
|
mv "$toDir" "$toDir.orig"
|
|
echo ${toDir}" is a directory. Backed up."
|
|
fi
|
|
mkdir -p $toDir && rsync -av "${fromDir}/" "${toDir}"
|
|
cd ${fromDir}
|
|
cd ..
|
|
#backup and remove original
|
|
mv "${fromDir}" "${fromDir}.orig" && rm -rf "${fromDir}"
|
|
|
|
#link .config to .var so flatpak still works
|
|
ln -sfn ${toDir} .
|
|
|
|
elif [[ $ans == "Keep AppImage Data" ]]; then
|
|
fromDir=${migrationTable[i+1]}
|
|
toDir=${migrationTable[i]}
|
|
cd ${toDir}
|
|
cd ..
|
|
#backup flatpak data
|
|
mv "${toDir}" "${toDir}.orig"
|
|
#link appimage data to flatpak folder
|
|
ln -sfn "${fromDir}" .
|
|
|
|
else
|
|
echo "Something went wrong"
|
|
exit
|
|
fi
|
|
|
|
}
|
|
else
|
|
echo "User doesn't want migration at this time."
|
|
fi
|
|
|
|
elif [[ -L ${migrationTable[0]} && -d ${migrationTable[0]} && -d ${migrationTable[1]} && ! -L ${migrationTable[1]} ]]; then
|
|
echo "Flatpak already linked"
|
|
elif [[ -d ${migrationTable[0]} && ! -e ${migrationTable[1]} ]]; then
|
|
echo "No AppImage data found, but flatpak data found. New AppImage install."
|
|
for ((i=0; i<=n; i=(i+2))) { # for each pair of dirs
|
|
|
|
|
|
fromDir=${migrationTable[i]}
|
|
toDir=${migrationTable[i+1]}
|
|
echo "Migrating ${fromDir} to ${toDir}"
|
|
cd ${fromDir}/..
|
|
#backup destination location, delete it, then sync original over
|
|
mkdir -p ${toDir} && rmdir ${toDir} #make the path for todir, but remove the end folder
|
|
mv "${fromDir}" "${toDir}" #move the original to the new location
|
|
#link .config to .var so flatpak still works
|
|
ln -sfn ${toDir} .
|
|
|
|
}
|
|
else
|
|
echo "do nothing"
|
|
fi
|
|
touch $migrationFlag
|
|
elif [ $doMigrate == "Leave ${emu} alone forever" ]; then
|
|
touch $migrationFlag
|
|
fi
|
|
fi
|
|
|
|
} |