Prepare backup of save game from XDG directories

This commit is contained in:
Jeremy Gardais 2019-10-09 20:30:17 +02:00
parent 9f072b8bfb
commit 414fc560fa
1 changed files with 66 additions and 0 deletions

66
games/save.game.xdg Executable file
View File

@ -0,0 +1,66 @@
#!/bin/sh
# Purpose {{{
## Try to centralize all game's save that respect XDG specifications in order to:
## easily backup all save
## easily restore it
## be able to access it from anywhere
## … all you can do with a Nextcloud (share, versionning,…)
##
## 1. Move save directories of a list of known games from XDG's
## directories to a remote directory (Nextcloud, remote mount,…).
## Then create a symlink in XDG directories to the remote game
## directory.
##
## 2. If a directory doesn't exist, check if a remote one is
## available and symlink it.
##
## KISS: Only manage save directories from Steam userdata. For other
## paths (Steam,…) check other scripts.
# }}}
# Vars {{{
debug=0
## XDG config {{{
XDG_CONFIG_HOME="${HOME}/.config"
xdg_config="$(printf "%s" "${XDG_CONFIG_HOME}" | sed -e "s;${HOME}/;;")"
config_games="..."
## }}}
## XDG data {{{
XDG_DATA_HOME="${HOME}/.local/share"
xdg_data="$(printf "%s" "${XDG_DATA_HOME}" | sed -e "s;${HOME}/;;")"
data_games="..."
## }}}
remote_dir="${HOME}/Nextcloud/games/linux.sgl.script"
# }}}
# Tests {{{
## Ensure remote dir exist {{{
if [ ! -d "${remote_dir}" ]; then
printf '\e[1;35m%-6s\e[m\n' "The directory for save game doesn't exists: ${remote_dir}"
exit 1
fi
## }}}
## Ensure XDG directories exist {{{
for xdg_dir in "${xdg_config}" "${xdg_data}"; do
local_xdg_path="${HOME}/${xdg_dir}"
if [ ! -d "${local_xdg_path}" ]; then
printf '\e[1;35m%-6s\e[m\n' "The XDG directory ${xdg_dir} doesn't exists yet… Should it must be create (for restoration,…) [Y/n]?"
read -r create_local_xdg
if [ "${create_local_xdg}" = "" ] || [ "${create_local_xdg}" = "Y" ] || [ "${create_local_xdg}" = "y" ]; then
mkdir -p -- "${local_xdg_path}"
else
printf '\e[1;35m%-6s\e[m\n' "XDG directory (${xdg_dir}) doesn't exists, abort script."
exit 2
fi
fi
done
## }}}
# }}}