[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.

-------------- 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
    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
    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
      _message -e targets 'rake target'

return ret

More information about the Rake-devel mailing list