Last Updated: February 25, 2016
·
227
· otakup0pe

indifferent source code access

Much of my .profile, as I'm sure is similar for the .profile of others, is built upon shortcuts and helpers for those commands which get typed (figuratively) millions of times a day.

Given how many repositories I am constantly juggling, I tend to constantly switch between directories containing source code. Early on in my Linux days I began keeping all in-progress projects in ~/src so it turned out to be quite simple to remove a (literally) handful of frequently-typed characters from my continuous workflows.

function csrc {
    if [ -d "${HOME}/src/${1}" ] ; then
        cd "${HOME}/src/${1}"
    else
        echo "directory ${1} not found"
    fi
}

And then yesterday I was looking for an excuse to figure out how to implement custom bash completion routines and this resulted.

function csrc_complete {
    local cur
    COMPREPLY=()
    if [ $COMP_CWORD != 1 ] ; then
        return
    fi
    cur="${COMP_WORDS[COMP_CWORD]}"
    COMPREPLY=( $(for d in $HOME/src/$cur* ; do basename $d ; done) )
    if [ "${COMPREPLY[0]}" == "${cur}*" ] ; then
        COMPREPLY=()
        return
    else
        return 0
    fi
}

complete -F csrc_complete csrc

Both of these snippets are nestled on some of the upper layers of my current .profile.