[Rake-devel] zsh completion function
Doug Kearns
dougkearns at gmail.com
Tue Jul 12 01:53:55 EDT 2005
rake is becoming popular enough that the lack of completion was starting
to annoy me so here it is... It should be pretty complete, if not, let
me know.
Regards,
Doug
-------------- next part --------------
#compdef rake
# rake, version 0.5.4
local curcontext="$curcontext" state line ret=1
typeset -A opt_args
_arguments -C \
'(--dry-run -n)'{--dry-run,-n}'[do a dry run without executing actions]' \
'(- *)'{--help,-H}'[display help information]' \
\*{--libdir,-I}'[include specified directory in the search path for required modules]:library directory:_files -/' \
'(--nosearch -N)'{--nosearch,-N}'[do not search parent directories for the Rakefile]' \
'(- *)'{--prereqs,-P}'[display the tasks and prerequisites, then exit]' \
'(--quiet -q --silent -s --verbose -v)'{--quiet,-q}'[do not log messages to standard output]' \
'(--rakefile -f)'{--rakefile,-f}'[use specified file as the rakefile]:rake file:_files' \
\*{--require,-r}'[require specified module before executing rakefile]:library:->library' \
'(--quiet -q --silent -s --verbose -v)'{--silent,-s}"[like --quiet, but also suppresses the 'in directory' announcement]" \
'(- *)'{--tasks,-T}'[display the tasks and dependencies, then exit]' \
'(--trace -t)'{--trace,-t}'[turn on invoke/execute tracing, enable full backtrace]' \
'(- *)'{--usage,-h}'[display usage information]' \
'(--quiet -q --silent -s --verbose -v)'{--verbose,-v}'[log message to standard output (default)]' \
'(- *)'{--version,-V}'[display version information]' \
'*:target:->target' && ret=0
case "$state" in
library)
local -a dirs
dirs=( $(_call_program directories ruby -e 'puts\ $:' 2>/dev/null) ${(s.:.)opt_args[-I]} )
_wanted libraries expl library _path_files -W dirs && ret=0
;;
target)
local -a targets
targets=( ${${(f)"$(_call_program targets $words[1] -sT $opt_args[(I)(-N|--nosearch)] ${(kv)opt_args[(I)(-f|--rakefile)]} 2>/dev/null)"}/(#b)rake ([^ ]##) ##\# (*)/$match[1]:${match[2]:l}} )
if (( ! ${targets[(I)rake aborted!]} )) then
_describe -t targets 'rake target' targets && ret=0
else
_message -e targets 'rake target'
fi
;;
esac
return ret
More information about the Rake-devel
mailing list