Published: 2011-11-01
To implement bash(1) tab completion for Cakefile task names all you need to do is add this completion function and command to your ~/.bashrc file:
# Task name completion for cake files.
function _cake() {
local cur tasks
cur="${COMP_WORDS[COMP_CWORD]}"
tasks=$(cake | awk '{print $2}')
if [ $COMP_CWORD -eq 1 ]; then
# Task name completion for first argument.
COMPREPLY=( $(compgen -W "$tasks" $cur) )
else
# File name completion for other arguments.
COMPREPLY=( $(compgen -f $cur) )
fi
}
complete -o default -F _cake cake c
|
Now it you type cake <Tab> at the bash command prompt you will get a list of tasks from the current Cakefile. As with all bash completion, if you start typing a name and press Tab then bash will complete the name for you.
To cut down key strokes I’ve also added a c alias for cake to ~/.bashrc:
alias c='cake' |
Advertisement