tg:
#!/usr/bin/env bash

# tg: quickly tag files
#
# Rename files based on the given tag. For example `tg old file.txt` changes
# `file.txt` to `file-old.txt`. If the file already contains the suppied tag,
# it is removed.

if [[ $# != 2 ]]; then
  printf "usage: tg TAG FILE \n"
  exit 1
fi

if [ -z "${2##*.*}" ]; then
  ext=".${2##*.}"
else
  ext=""
fi
file="${2%.*}"

if [[ $(echo "$file" | rev | cut -d '-' -f 1 | rev) != "$1" ]]; then
  mv "$2" "${file}-$1$ext"
else
  mv "$2" "$(echo "$file" | rev | cut -d '-' -f 2- | rev)$ext"
fi