Luke Jones

got - got

#!/usr/bin/env bash GOT_FILE="$HOME/.usergot" [ ! -f "$GOT_FILE" ] && touch "$GOT_FILE" if ! declare -f got >/dev/null 2>&1; then got() { if [ $# -eq 0 ]; then echo "Usage:" echo " got <key> - cd into stored path for <key>" echo " got -a <key> - add current directory as value for <key>" echo " got -r <key> - remove <key>" echo " got -o <key> - overwrite (or add) <key> with current directory" echo " got -l - list existing keys" return 1 fi case "$1" in -a) key="$2" if [ -z "$key" ]; then usage return 1 fi if grep -q "^$key " "$GOT_FILE"; then echo "Key '$key' already exists. Use -o to overwrite." return 1 fi echo "$key \"$(pwd)/\"" >> "$GOT_FILE" echo "Added '$key' -> $(pwd)/" ;; -r) key="$2" if [ -z "$key" ]; then usage return 1 fi if grep -q "^$key " "$GOT_FILE"; then grep -v "^$key " "$GOT_FILE" > "$GOT_FILE.tmp" && mv "$GOT_FILE.tmp" "$GOT_FILE" echo "Removed '$key'." else echo "Key '$key' doesn't exist." return 1 fi ;; -o) key="$2" if [ -z "$key" ]; then echo "Please provide a key to overwrite/add." return 1 fi grep -v "^$key " "$GOT_FILE" > "$GOT_FILE.tmp" && mv "$GOT_FILE.tmp" "$GOT_FILE" echo "$key \"$(pwd)/\"" >> "$GOT_FILE" echo "Set '$key' -> $(pwd)/" ;; -l) cat "$GOT_FILE" ;; *) key="$1" value=$(grep "^$key " "$GOT_FILE" | sed -E 's/^[^"]*"([^"]*)".*/\1/') if [ -n "$value" ]; then cd "$value" else echo "Key doesn't exist." return 1 fi ;; esac } export -f got fi