#!/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() {
    printf '%s\n' 'Recursively generating tags for the following paths:'

    for path in "$@"; do
        printf '%s\n' "   $path"
    done

    if $ctags_cmd "$@" >/dev/null 2>&1; then
        printf '%s\n' 'Done!'
    else
        printf '%s\n' 'Failed!'
        exit 1
    fi
}

if command -v ctags >/dev/null; then
    [[ -n "$1" ]] && generate_tags "$@" || generate_tags "$PWD"
else
    printf '%s\n' 'Error: cannot find the ctags binary in $PATH'
    exit 1
fi