#!/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}"