mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 18:10:56 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			147 lines
		
	
	
	
		
			6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
	
		
			6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #compdef ant -value-,ANT_ARGS,-default-
 | |
| 
 | |
| # Apache Ant version 1.7.1
 | |
| 
 | |
| 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
 | |
|                 expanded=( $(echo $file | sed -n "s|\${ant.home}|$ANT_HOME|p") )
 | |
|                 if [[ ! "bla$expanded" = "bla" ]]; then
 | |
|                     file=$expanded
 | |
|                 fi
 | |
|                 if [[ -f $file ]]; then
 | |
|                     find_targets $file
 | |
|                 fi
 | |
|         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]' \
 | |
|   '-autoproxy[Java1.5+: use the OS proxy settings]' \
 | |
|   "-main[override Ant's normal entry point]:class:->class" \
 | |
|   $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
 |