Initial Push
This commit is contained in:
commit
1775358a9c
4 changed files with 116 additions and 0 deletions
27
README.md
Normal file
27
README.md
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
# CereSaves
|
||||||
|
~~(aka Syncthing-CloudSaves)~~
|
||||||
|
|
||||||
|
This is a basic little wrapper utility that automatically checks to see if newer savedata exists in some sort of synced directory, and automatically loads in any newer data it finds.
|
||||||
|
|
||||||
|
Obviously this is a WIP and not very good, but I wanted a quick and dirty cloud saves solution for non-steam games.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
```bash
|
||||||
|
git clone repo_url_here.git
|
||||||
|
cd reponame
|
||||||
|
```
|
||||||
|
Edit `stcs-global-config.sh`
|
||||||
|
* `STCS_SAVEGAME_SYNCDIR` should point to the folder being synced by your syncing solution of choice (ie Syncthing, Resilio Sync, etc)
|
||||||
|
* `STCS_TIMESTAMPS_DIR` should point to a local directory to store a timestamp of each game that's backed up.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir ~/.local/share/CereSaves/
|
||||||
|
cp stcs-global-config.sh ~/.local/share/CereSaves/
|
||||||
|
cp stcs-wrapper.sh ~/.local/bin # Or anywhere else on the $PATH
|
||||||
|
mkdir "$HOME/.local/share/CereSaves/Timestamps" # Or whatever you changed the value of STCS_TIMESTAMPS_DIR to be
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
* Place a copy of `stcs-config.sh.example` next to the game being executed.
|
||||||
|
* Edit the file, removing the `.example` and filling out the gamename and the location of the savedata to back up. (It can be a file or folder of savedata)
|
||||||
|
* Prefix any launch command you wish to invoke with `stcs-wrapper.sh`, similar to how you'd load `mangohud`!
|
4
stcs-config.sh.example
Normal file
4
stcs-config.sh.example
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
export STCS_GAMENAME="GameName Goes Here"
|
||||||
|
export STCS_SAVEPATH="/path/to/SaveData"
|
4
stcs-global-config.sh
Normal file
4
stcs-global-config.sh
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
export STCS_SAVEGAME_SYNCDIR="$HOME/.savesync"
|
||||||
|
export STCS_TIMESTAMPS_DIR="$HOME/.local/share/CereSaves/Timestamps"
|
81
stcs-wrapper.sh
Normal file
81
stcs-wrapper.sh
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Check for Configs
|
||||||
|
STCS_GLOBAL_CONFIG="$HOME/.local/share/CereSaves/stcs-global-config.sh"
|
||||||
|
|
||||||
|
if [ ! -f "$STCS_GLOBAL_CONFIG" ]; then
|
||||||
|
echo "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-config.sh" ]; then
|
||||||
|
echo "Config not found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
source "$STCS_GLOBAL_CONFIG"
|
||||||
|
source ./stcs-config.sh
|
||||||
|
|
||||||
|
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 () {
|
||||||
|
echo "[CereSaves] prelaunch start"
|
||||||
|
if checkpretimestamps; then
|
||||||
|
# Assume Save Data needs to be restored!
|
||||||
|
if [ -f "$STCS_SAVEPATH" ]; then
|
||||||
|
#echo "Savedata $STCS_SAVEPATH is a file!"
|
||||||
|
cp "$STCS_SYNCED_SAVADATA_PATH/$(basename $STCS_SAVEPATH)" "$STCS_SAVEPATH"
|
||||||
|
fi
|
||||||
|
if [ -d "$STCS_SAVEPATH" ]; then
|
||||||
|
#echo "Savedata $STCS_SAVEPATH is a folder!"
|
||||||
|
rsync -az "$STCS_SYNCED_SAVADATA_PATH/$(basename $STCS_SAVEPATH)/" "$STCS_SAVEPATH/"
|
||||||
|
fi
|
||||||
|
cp "$STCS_SYNCED_TIMESTAMP_PATH" "$STCS_CACHED_TIMESTAMP_PATH"
|
||||||
|
fi
|
||||||
|
echo "[CereSaves] prelaunch complete"
|
||||||
|
}
|
||||||
|
|
||||||
|
postlaunch () {
|
||||||
|
echo "[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!"
|
||||||
|
cp "$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 -az "$STCS_SAVEPATH/" "$STCS_SYNCED_SAVADATA_PATH/$(basename $STCS_SAVEPATH)/"
|
||||||
|
fi
|
||||||
|
date +%s > "$STCS_SYNCED_TIMESTAMP_PATH"
|
||||||
|
echo "[CereSaves] postlaunch complete"
|
||||||
|
}
|
||||||
|
|
||||||
|
checkpretimestamps () {
|
||||||
|
if [ ! -f "$STCS_CACHED_TIMESTAMP_PATH" ]; then
|
||||||
|
# Cached timestamp does not exist.
|
||||||
|
echo "1" > $STCS_CACHED_TIMESTAMP_PATH
|
||||||
|
elif [ ! -f "$STCS_SYNCED_TIMESTAMP_PATH" ]; then
|
||||||
|
# Synced timestamp does not exist
|
||||||
|
echo "0" > $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
|
||||||
|
}
|
||||||
|
|
||||||
|
prelaunch
|
||||||
|
exec "$@"
|
||||||
|
postlaunch
|
Loading…
Reference in a new issue