1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
|
#compdef ant -value-,ANT_ARGS,-default-
# Apache Ant version 1.6.5
local curcontext="$curcontext" state line expl ret=1
typeset -A opt_args
local buildfile classpath cp userjars importedfiles target='*:target:->target' targets tmp
find_targets() {
importedfiles=( $(sed -n "s/ *<import[^>]* file=[\"']\([^\"']*\)[\"'].*/\1/p" < $1) )
# Tweaked to omit targets beginning with "-" that can't
# be invoked from the command line; see zsh-workers/24129.
sed -n "s/ *<target[^>]* name=[\"']\([^-][^\"']*\)[\"'].*/\1/p" $1
if (( $#importedfiles )) ; then
( cd $1:h
for file in $importedfiles ; do
find_targets $file
done )
fi
}
if [[ $service = *ANT_ARGS* ]]; then
compset -q
words=( fake "$words[@]" )
(( CURRENT++ ))
unset target
fi
_arguments -C \
'(- *)'{-h,-help,--h,--help}'[display help information]' \
'--noconfig[suppress sourcing of configuration files]' \
'--usejikes[enable use of jikes by default, unless set explicitly in configuration files]' \
'--execdebug[print ant exec line generated by this launch script]' \
'(-p -projecthelp *)'{-p,-projecthelp}'[print project help information]' \
'(- *)-version[display version information]' \
'(- *)-diagnostics[print information helpful to diagnosis or report problems]' \
'(-q -quiet)'{-q,-quiet}'[be extra quiet]' \
'(-v -verbose)'{-v,-verbose}'[be extra verbose]' \
'(-d -debug)'{-d,-debug}'[print debugging information]' \
'(-e -emacs)'{-e,-emacs}'[produce logging information without adornments]' \
'*-lib[specify a path to search for jars and classes]:class path:->classpath' \
'(-l -logfile)'{-l,-logfile}'[use specified file for log]:logfile:_files' \
'-logger[specify the class which is to perform logging]:class:->class' \
'*-listener[add an instance of specified class as a project listener]:class:->class' \
'-noinput[do not allow interactive input]' \
'(-f -file -buildfile -s -find)'{-f,-file,-buildfile}'[use specified build file]:build file:_files -g "*.xml(-.)"' \
'*-D[specify property with value to use]:property:->property' \
'(-k -keep-going)'{-keep-going,-k}'[execute all targets that do not depend on failed target(s)]' \
'-propertyfile[load all properties from specified file with -D properties taking precedence]:property file:_files -g "*.properties(-.)"' \
'-inputhandler[specify class which will handle input requests]:class:->class' \
'(-s -find -f -file -buildfile)'{-s,-find}'[search for specified build file towards the root of filesystem]:build file:(build.xml)' \
'-nice[specify a niceness value for the main thread]:niceness value (default 5):({1..10})' \
'-nouserlib[run ant without using the jar files from ${user.home}/.ant/lib]' \
'-noclasspath[run ant without using CLASSPATH]' \
$target && ret=0
case $state in
class)
if (( ! $+opt_args[-nouserlib] )); then
userjars=( $HOME/.ant/lib/*.jar )
fi
if (( ! $+opt_args[-noclasspath] )); then
classpath=$CLASSPATH
fi
cp=( $opt_args[-lib] $userjars $ANT_HOME/lib/*.jar $classpath )
cp=${(j.:.)cp:-' '}
_java_class -classpath $cp && ret=0
;;
classpath)
compset -P '*:'
compset -S ':*'
_alternative \
"classpath:$state:_path_files -qS: -g '*.(jar|zip)(-.)'" \
"classpath:$state:_path_files -r': ' -/" && ret=0
;;
property)
if compset -P '*='; then
_default && ret=0
else
_message -e properties 'property name'
fi
;;
target)
if [[ -n $opt_args[(I)(-s|-find)] ]]; then
buildfile=( (../)#${(v)opt_args[(I)(-s|-find)]:-build.xml}(N[-1]) )
else
buildfile=${(v)opt_args[(I)(-f|-file|-buildfile)]:-build.xml}
fi
if [[ -f $buildfile ]]; then
if zstyle -t ":completion:${curcontext}:targets" call-command; then
# Run ant -projecthelp also passing any of -find, -s, -buildfile, -file
# 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]" -buildfile $buildfile -projecthelp |
while read target desc
do
# This loop reads ant -projecthelp output from versions 1.3 to 1.6
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 && ret=0
else
targets=( $(find_targets $buildfile) )
_wanted targets expl target compadd -a targets && ret=0
fi
else
_message -e targets target
fi
;;
esac
return ret
|