diff options
-rwxr-xr-x | scripts/updater.sh | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/scripts/updater.sh b/scripts/updater.sh new file mode 100755 index 0000000..47daa20 --- /dev/null +++ b/scripts/updater.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +# WARNING: This script is a proof-of-concept and prone to errors. I don't want to hear any bitching if you use this and it blows up your game db. Back it up using `vgstash export -i foo.yaml` first. + +# TODO: Refactor into multiple functions to improve error-handling. + +# Color escapes we'll use +norm="[0m" +BG="[1;32m" # Green +BC="[1;36m" # Cyan +BY="[1;33m" # Yellow +# Print the header first +vgstash list | head -n 2 +# Let advanced users grep for a specific game +vgstash list | grep -i "$1" +# -ne omits the newline and accepts color escapes; handy! +echo -ne "${BG}Which ID do you want to update?${norm} " +read game_id +echo "${game_id} selected." +# Check to make sure $game_id is a number +case $game_id in + ''|*[!0-9]*) + echo "No matching game found." + exit 1 + ;; + *) + echo "Found game ID '${game_id}'!" + ;; +esac +# TODO: make sure the game is actually in the db... +echo -ne "${BG}Which field are you updating?\n[t]itle, [s]ystem, [o]wnership, [p]rogress: ${norm}" +read game_field +case $game_field in + t|s) + clause="string" + ;; + o) + clause="y/n" + ;; + p) + clause="[f]resh, [i]n-progress, [b]eaten, [c]omplete" + ;; + *) + echo "Invalid" + exit 1 + ;; +esac +echo -ne "${BG}What to?\n${clause}: ${norm}" +read game_value +# TODO: Put this into a loop/function +echo "Running '${BC}vgstash update ${game_id} ${game_field} "${game_value}"${norm}'..." +echo -ne "${BY}" +vgstash update ${game_id} ${game_field} "${game_value}" +echo -ne "${norm}" |