#!/bin/sh

# Check dependencies
[ -z "$(which fd 2>/dev/null)" ] && echo "[-] You need fd installed" && exit 1
[ -z "$(which rg 2>/dev/null)" ] && echo "[-] You need ripgrep (rg) installed" && exit 1
[ -z "$(which fzf 2>/dev/null)" ] && echo "[-] You need fzf installed" && exit 1

function usage {

    echo "cheat.sh - cheatsheet reader"
    echo "Options:"
    echo "    -h   print help/usage"
    echo "    -l   list all files"
    echo "    -p   print cheatsheets path"
    echo "    -w   writable"
    echo "    -g   open in gvim"
    echo "    -s   search for string in <arg> using ripgrep"
}

# Set the path to the cheatncheck repo here

if [ "$CHEAT" = "" ]; then
    cheatsheets="$HOME/documents/cheatsheets/"
else
    cheatsheets="$CHEAT"
fi

# check if the cheatsheets dir. exists.
[ ! -d "$cheatsheets" ] && echo "[-] Cheatsheet folder does not exist." && exit 1

# if yes, switch to that dir.
cd $cheatsheets

if [ $# -eq 0 ] ; then
    vim -R -c "Goyo 90%" "$(fzf)"
    exit 1
fi

# Option Parsin
while getopts ":ghlws:p" options ; do
    case "${options}" in
        h) usage ;;                             # print help/usage
        l) fd -t f \.md -x echo {/.} ;;         # list all files
        p) echo $cheatsheets ;;                 # print cheatsheets path
        w) vim -c "Goyo 90%" "$(fzf)" ;;        # writable
        g) vim -R -c "Goyo 90%" "$(fzf)" -g ;;  # open in gvim
        s) rg "${OPTARG}" ;;                    # search for string in <arg> using ripgrep
        *) echo 'Invalid Argument' ;;           # Argument not available
    esac
done