summaryrefslogtreecommitdiffstats
path: root/Completion/Unix/Command/_ant
diff options
context:
space:
mode:
authorOliver Kiddle <opk@users.sourceforge.net>2005-03-21 16:50:17 +0000
committerOliver Kiddle <opk@users.sourceforge.net>2005-03-21 16:50:17 +0000
commite222689ea14bcf037ef5085d85216c8bd2ddd3d0 (patch)
treeb21e27027f452fae2c5a2edd54ef178e480d422f /Completion/Unix/Command/_ant
parentLatest changes from trunk. (diff)
downloadzsh-e222689ea14bcf037ef5085d85216c8bd2ddd3d0.tar
zsh-e222689ea14bcf037ef5085d85216c8bd2ddd3d0.tar.gz
zsh-e222689ea14bcf037ef5085d85216c8bd2ddd3d0.tar.bz2
zsh-e222689ea14bcf037ef5085d85216c8bd2ddd3d0.tar.lz
zsh-e222689ea14bcf037ef5085d85216c8bd2ddd3d0.tar.xz
zsh-e222689ea14bcf037ef5085d85216c8bd2ddd3d0.tar.zst
zsh-e222689ea14bcf037ef5085d85216c8bd2ddd3d0.zip
merge changes from 4.3 branch
Diffstat (limited to 'Completion/Unix/Command/_ant')
-rw-r--r--Completion/Unix/Command/_ant102
1 files changed, 102 insertions, 0 deletions
diff --git a/Completion/Unix/Command/_ant b/Completion/Unix/Command/_ant
new file mode 100644
index 000000000..6ef0e733d
--- /dev/null
+++ b/Completion/Unix/Command/_ant
@@ -0,0 +1,102 @@
+#compdef ant -value-,ANT_ARGS,-default-
+
+typeset -A opt_args
+local buildfile tmp state line curcontext="$curcontext" ret=1
+local targets importedfiles
+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 && ret=0
+
+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 && ret=0
+ 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
+ importedfiles=( $(sed -n "s/ *<import[^>]* file=[\"']\([^\"']*\)[\"'].*/\1/p" < $buildfile) )
+ targets=( $(sed -n "s/ *<target[^>]* name=[\"']\([^\"']*\)[\"'].*/\1/p" $buildfile) )
+ (( $#importedfiles )) && targets+=( $(cd $buildfile:h;
+ sed -n "s/ *<target[^>]* name=[\"']\([^\"']*\)[\"'].*/\1/p" $importedfiles) )
+ _wanted targets expl target compadd -a targets && ret=0
+ else
+ _message -e targets target
+ fi
+ fi
+ ;;
+esac
+
+return ret