#!/usr/bin/env bash

TAGS_FILE="${HOME}/.vim/tags"
CTAGS_CMD="ctags --fields=+l --c-kinds=+p --c++-kinds=+p -R -f ${TAGS_FILE}"

function generate_tags(){
    echo -e "\nRecursively generating tags for the following paths:"
    for path in "$@"; do
        echo "   ${path}"
    done
    RESULT=$($CTAGS_CMD "$@" >/dev/null 2>&1) && echo -e "Done!\n" || echo -e "Failed! Look at ${TAGS_FILE}.log for details.\n"
    if [[ -n "$RESULT" ]]; then
        echo "$RESULT" >> "${TAGS_FILE}.log"
    fi
}

if [[ $(type -P ctags) ]]; then
    [[ -n "$1" ]] && generate_tags "$@" || generate_tags "$PWD"
else
    echo 'Error: cannot find the ctags binary in $PATH'
    exit 1
fi