The Rails generator script/generate knows pretty well what things it can generate. In fact, it knows much better than I do. So, I think it could really give me some help when I’m typing along on the command line.
If you save the snippet below as /etc/bash_completion.d/generate you can enjoy this help, too.
_generate()
{
local cur
COMPREPLY=()
cur=${COMP_WORDS[COMP_CWORD]}
if [ ! -d "$PWD/script" ]; then
return 0
fi
if [ $COMP_CWORD == 1 ] && [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W '-h -v\\
--help --version'\\
-- $cur ))
return 0
fi
if [ $COMP_CWORD == 2 ] && [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W '-p -f -s -q -t -c\\
--pretend --force --skip --quiet --backtrace --svn'\\
-- $cur ))
return 0
fi
COMPREPLY=( $(script/generate --help | \\
awk -F ': ' '/^ (Plugins|Rubygems|Builtin|User):/ { gsub(/, */, "\n", $2); print $2 }' | \\
command grep "^$cur" \\
))
}
complete -F _generate $default generate