aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZeLibertineGamer <zlg@zlg.space>2016-05-23 03:35:36 -0700
committerZe Libertine Gamer <zlg@zlg.space>2016-05-23 03:35:36 -0700
commit1fc93716700373505199c04183bd57f7a0d11e1a (patch)
treea17dbd5ca7b57d49c47f14b7b990c14db1feae4e
parentAdd duplicate game reporting script (diff)
downloadvgstash-1fc93716700373505199c04183bd57f7a0d11e1a.tar.gz
vgstash-1fc93716700373505199c04183bd57f7a0d11e1a.tar.bz2
vgstash-1fc93716700373505199c04183bd57f7a0d11e1a.tar.xz
vgstash-1fc93716700373505199c04183bd57f7a0d11e1a.zip
Add interactive game updater script
This is an interactive, but extremely dumb script that is not robust with error handling at all. However, it's a good start and a proof of concept. When/if this gets refactored, it'll be rather nice.
-rwxr-xr-xscripts/updater.sh54
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=""
+BG="" # Green
+BC="" # Cyan
+BY="" # 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}"