CereSaves/stcs-wrapper.sh

105 lines
3.4 KiB
Bash
Executable File

#!/bin/bash
# Check for Configs
STCS_GLOBAL_CONFIG="$HOME/.local/share/CereSaves/stcs-global-config.sh"
if [ -z ${STCS_GAME_CONFIG+x} ]; then
logfunny "[CereSaves] Game config not defined, trying default!";
STCS_GAME_CONFIG="./stcs-config.sh"
else
logfunny "[CereSaves] Game config is set to '$STCS_GAME_CONFIG'";
fi
if [ ! -f "$STCS_GLOBAL_CONFIG" ]; then
logfunny "[CereSaves] Global config not found!"
exit 1
fi
# TODO - find a way to make this not a static filename, for multiple games in one folder.
if [ ! -f "$STCS_GAME_CONFIG" ]; then
logfunny "[CereSaves] Game config not found!"
exit 1
fi
source "$STCS_GLOBAL_CONFIG"
source "$STCS_GAME_CONFIG"
STCS_CACHED_TIMESTAMP_PATH="${STCS_TIMESTAMPS_DIR}/${STCS_GAMENAME}.timestamp"
STCS_SYNCED_TIMESTAMP_PATH="${STCS_SAVEGAME_SYNCDIR}/${STCS_GAMENAME}.timestamp"
STCS_SYNCED_SAVADATA_PATH="${STCS_SAVEGAME_SYNCDIR}/${STCS_GAMENAME}"
prelaunch () {
logfunny "[CereSaves] prelaunch start"
if checkpretimestamps; then
# Assume Save Data needs to be restored!
logfunny "[CereSaves] Update to local savedata detected!"
if [ -f "$STCS_SAVEPATH" ]; then
#echo "Savedata $STCS_SAVEPATH is a file!"
rsync -az --ignore-times "$STCS_SYNCED_SAVADATA_PATH/$(basename $STCS_SAVEPATH)" "$STCS_SAVEPATH"
fi
if [ -d "$STCS_SAVEPATH" ]; then
#echo "Savedata $STCS_SAVEPATH is a folder!"
rsync -az --ignore-times "$STCS_SYNCED_SAVADATA_PATH/$(basename $STCS_SAVEPATH)/" "$STCS_SAVEPATH/"
fi
rsync -az --ignore-times "$STCS_SYNCED_TIMESTAMP_PATH" "$STCS_CACHED_TIMESTAMP_PATH"
fi
logfunny "[CereSaves] prelaunch complete"
}
postlaunch () {
logfunny "[CereSaves] postlaunch start"
# Create Backup Dir if it doesn't exist.
if [ ! -d "$STCS_SYNCED_SAVADATA_PATH" ]; then
mkdir "$STCS_SYNCED_SAVADATA_PATH"
fi
# Back up Save Data
if [ -f "$STCS_SAVEPATH" ]; then
#echo "Savedata $STCS_SAVEPATH is a file!"
rsync --ignore-times -az "$STCS_SAVEPATH" "$STCS_SYNCED_SAVADATA_PATH/"
fi
if [ -d "$STCS_SAVEPATH" ]; then
#echo "Savedata $STCS_SAVEPATH is a folder!"
if [ -d "$STCS_SYNCED_SAVADATA_PATH/$(basename $STCS_SAVEPATH)/" ]; then
mkdir "$STCS_SYNCED_SAVADATA_PATH/$(basename $STCS_SAVEPATH)/"
fi
rsync --ignore-times -az "$STCS_SAVEPATH/" "$STCS_SYNCED_SAVADATA_PATH/$(basename $STCS_SAVEPATH)/"
fi
local TIMESTAMP=$(date +%s)
echo "$TIMESTAMP" | tee "$STCS_SYNCED_TIMESTAMP_PATH"
logfunny "[CereSaves] New sync timestamp is $TIMESTAMP"
logfunny "[CereSaves] postlaunch complete"
}
checkpretimestamps () {
if [ ! -f "$STCS_CACHED_TIMESTAMP_PATH" ]; then
# Cached timestamp does not exist.
echo "1" | tee "$STCS_CACHED_TIMESTAMP_PATH"
fi
if [ ! -f "$STCS_SYNCED_TIMESTAMP_PATH" ]; then
# Synced timestamp does not exist
echo "0" | tee "$STCS_SYNCED_TIMESTAMP_PATH"
fi
if [ $(cat "$STCS_SYNCED_TIMESTAMP_PATH") -gt $(cat "$STCS_CACHED_TIMESTAMP_PATH") ]; then
# Update Needed!
return 0
else
return 1
fi
}
logfunny () {
if [ -z ${STCS_DEBUG_LOG_FILE+x} ]; then
STCS_DEBUG_LOG_FILE="./stcs-log.log"
fi
if [ ${STCS_DEBUG_LOG} -eq "1" ]; then
echo "$@" | tee -a "$STCS_DEBUG_LOG_FILE"
else
echo "$@"
fi
}
prelaunch;
"$@";
postlaunch;
logfunny "[CereSaves] script complete"