#compdef ant -value-,ANT_ARGS,-default- typeset -A opt_args local buildfile tmp state line curcontext="$curcontext" local c target='*:target:->target' c=( $ANT_HOME/lib/*.jar ) if [[ $service = *ANT_ARGS* ]]; then compset -q words=( fake "$words[@]" ) (( CURRENT++ )) unset target fi _arguments -C \ '-help[display usage information]' \ '-projecthelp[print project help information]' \ '-version[display version information]' \ '-diagnostics[display info useful to problem diagnosis]' \ '(-q -quiet)'{-q,-quiet}'[be extra quiet]' \ '(-v -verbose)'{-v,-verbose}'[be more verbose]' \ '-debug[print debugging information]' \ '-emacs[produce logging information without adornments]' \ '(-l -logfile)'{-l,-logfile}'[use specified file for log]:logfile:_files' \ '-logger[the class which is to perform logging]:classname:_java_class -cp ${(j.:.)c}' \ '*-listener[add an instance of class as a project listener]:classname:_java_class -cp ${(j.:.)c}' \ '(-f -file -buildfile -find)'{-f,-file,-buildfile}'[use specified build file]:build file:_files' \ '*-D[specify property with value to use]:property:->property' \ '-propertyfile[load properties from specified file]:property file:_files' \ '-inputhandler[specify class which will handle input requests]:class:_java_class -cp ${(j.\:.)c}' \ '(-f -file -buildfile)-find[search for build file towards the root of filesystem]:build file:(build.xml)' \ $target && return case $state in property) if compset -P '*='; then _default else _message -e properties 'property name' fi ;; target) if zstyle -t ":completion:${curcontext}:targets" call-command; then # Run ant -projecthelp also passing any of -find, -buildfile or -f options. # Parse output into an array of the format "target:description". # For the array to be set with correct argument boundaries, the entire # set statement needs to be eval'd. On Cygwin, need to kill \r's output # from Java or parsing will fail. eval set -A tmp "${$(_call_program targets "$words[1]" $buildxml -projecthelp | while read target desc do # This loop reads ant -projecthelp output from versions 1.3 to 1.5 ln="${target}${desc:+:$desc}" [[ $target = "" ]] && continue # skip blank lines case $ln in (Buildfile:*) buildfile=$desc ;; (Default:target:*) # with version 1.5, target is on the same line default_target="${${desc/target:/}# }" # versions 1.3 and 1.4 with default target on a separate line if [[ -z $default_target ]]; then read junk read default_target junk fi # Output target again indicating its the default one. print -n "'${default_target}:(Default target) ' " ;; (Searching:*|Main:targets:|Subtargets:|BUILD:SUCCESSFUL|Total:time: *) ;; (*) # Return target and description print -n "'$ln' " ;; esac done )//$'\015'}" _describe 'target' tmp else if [[ -n $opt_args[-find] ]]; then buildfile=( (../)#${opt_args[-find]:-build.xml}(N[-1]) ) else buildfile=${(v)opt_args[(I)(-f|-file|-buildfile)]:-build.xml} fi if [[ -f $buildfile ]]; then targets=( $(sed -n 's/ *