CereSaves/stcs-wrapper.sh

105 lines
3.4 KiB
Bash
Raw Normal View History

2024-07-08 05:29:39 +00:00
#!/bin/bash
# Check for Configs
STCS_GLOBAL_CONFIG="$HOME/.local/share/CereSaves/stcs-global-config.sh"
if [ -z ${STCS_GAME_CONFIG+x} ]; then
2024-07-08 09:12:28 +00:00
logfunny "[CereSaves] Game config not defined, trying default!";
STCS_GAME_CONFIG="./stcs-config.sh"
else
2024-07-08 09:12:28 +00:00
logfunny "[CereSaves] Game config is set to '$STCS_GAME_CONFIG'";
fi
2024-07-08 05:29:39 +00:00
if [ ! -f "$STCS_GLOBAL_CONFIG" ]; then
2024-07-08 09:12:28 +00:00
logfunny "[CereSaves] Global config not found!"
2024-07-08 05:29:39 +00:00
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
2024-07-08 09:12:28 +00:00
logfunny "[CereSaves] Game config not found!"
2024-07-08 05:29:39 +00:00
exit 1
fi
source "$STCS_GLOBAL_CONFIG"
source "$STCS_GAME_CONFIG"
2024-07-08 05:29:39 +00:00
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 () {
2024-07-08 09:12:28 +00:00
logfunny "[CereSaves] prelaunch start"
2024-07-08 05:29:39 +00:00
if checkpretimestamps; then
# Assume Save Data needs to be restored!
2024-07-08 09:12:28 +00:00
logfunny "[CereSaves] Update to local savedata detected!"
2024-07-08 05:29:39 +00:00
if [ -f "$STCS_SAVEPATH" ]; then
#echo "Savedata $STCS_SAVEPATH is a file!"
2024-07-08 09:12:28 +00:00
rsync -az --ignore-times "$STCS_SYNCED_SAVADATA_PATH/$(basename $STCS_SAVEPATH)" "$STCS_SAVEPATH"
2024-07-08 05:29:39 +00:00
fi
if [ -d "$STCS_SAVEPATH" ]; then
#echo "Savedata $STCS_SAVEPATH is a folder!"
2024-07-08 09:12:28 +00:00
rsync -az --ignore-times "$STCS_SYNCED_SAVADATA_PATH/$(basename $STCS_SAVEPATH)/" "$STCS_SAVEPATH/"
2024-07-08 05:29:39 +00:00
fi
2024-07-08 09:12:28 +00:00
rsync -az --ignore-times "$STCS_SYNCED_TIMESTAMP_PATH" "$STCS_CACHED_TIMESTAMP_PATH"
2024-07-08 05:29:39 +00:00
fi
2024-07-08 09:12:28 +00:00
logfunny "[CereSaves] prelaunch complete"
2024-07-08 05:29:39 +00:00
}
postlaunch () {
2024-07-08 09:12:28 +00:00
logfunny "[CereSaves] postlaunch start"
2024-07-08 05:29:39 +00:00
# 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!"
2024-07-08 09:12:28 +00:00
rsync --ignore-times -az "$STCS_SAVEPATH" "$STCS_SYNCED_SAVADATA_PATH/"
2024-07-08 05:29:39 +00:00
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
2024-07-08 09:12:28 +00:00
rsync --ignore-times -az "$STCS_SAVEPATH/" "$STCS_SYNCED_SAVADATA_PATH/$(basename $STCS_SAVEPATH)/"
2024-07-08 05:29:39 +00:00
fi
2024-07-08 09:12:28 +00:00
local TIMESTAMP=$(date +%s)
echo "$TIMESTAMP" | tee "$STCS_SYNCED_TIMESTAMP_PATH"
logfunny "[CereSaves] New sync timestamp is $TIMESTAMP"
logfunny "[CereSaves] postlaunch complete"
2024-07-08 05:29:39 +00:00
}
checkpretimestamps () {
if [ ! -f "$STCS_CACHED_TIMESTAMP_PATH" ]; then
# Cached timestamp does not exist.
2024-07-08 07:59:28 +00:00
echo "1" | tee "$STCS_CACHED_TIMESTAMP_PATH"
fi
if [ ! -f "$STCS_SYNCED_TIMESTAMP_PATH" ]; then
2024-07-08 05:29:39 +00:00
# Synced timestamp does not exist
2024-07-08 07:59:28 +00:00
echo "0" | tee "$STCS_SYNCED_TIMESTAMP_PATH"
2024-07-08 05:29:39 +00:00
fi
if [ $(cat "$STCS_SYNCED_TIMESTAMP_PATH") -gt $(cat "$STCS_CACHED_TIMESTAMP_PATH") ]; then
# Update Needed!
return 0
else
return 1
fi
}
2024-07-08 09:12:28 +00:00
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"