mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-11-14 22:50:55 +01:00
Merge of trunk for workers/{20867,21293,21302,21693,21698}.
This commit is contained in:
parent
44b2f09210
commit
70bc92cfe3
1 changed files with 104 additions and 69 deletions
|
|
@ -1,11 +1,21 @@
|
||||||
#compdef ant -value-,ANT_ARGS,-default-
|
#compdef ant -value-,ANT_ARGS,-default-
|
||||||
|
|
||||||
typeset -A opt_args
|
# Apache Ant version 1.6.5
|
||||||
local buildfile tmp state line curcontext="$curcontext" ret=1
|
|
||||||
local targets importedfiles
|
|
||||||
local c target='*:target:->target'
|
|
||||||
|
|
||||||
c=( $ANT_HOME/lib/*.jar )
|
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) )
|
||||||
|
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
|
if [[ $service = *ANT_ARGS* ]]; then
|
||||||
compset -q
|
compset -q
|
||||||
|
|
@ -15,86 +25,111 @@ if [[ $service = *ANT_ARGS* ]]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
_arguments -C \
|
_arguments -C \
|
||||||
'-help[display usage information]' \
|
'(- *)'{-h,-help,--h,--help}'[display help information]' \
|
||||||
'-projecthelp[print project help information]' \
|
'--noconfig[suppress sourcing of configuration files]' \
|
||||||
'-version[display version information]' \
|
'--usejikes[enable use of jikes by default, unless set explicitly in configuration files]' \
|
||||||
'-diagnostics[display info useful to problem diagnosis]' \
|
'--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]' \
|
'(-q -quiet)'{-q,-quiet}'[be extra quiet]' \
|
||||||
'(-v -verbose)'{-v,-verbose}'[be more verbose]' \
|
'(-v -verbose)'{-v,-verbose}'[be extra verbose]' \
|
||||||
'-debug[print debugging information]' \
|
'(-d -debug)'{-d,-debug}'[print debugging information]' \
|
||||||
'-emacs[produce logging information without adornments]' \
|
'(-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' \
|
'(-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}' \
|
'-logger[specify the class which is to perform logging]:class:->class' \
|
||||||
'*-listener[add an instance of class as a project listener]:classname:_java_class -cp ${(j.:.)c}' \
|
'*-listener[add an instance of specified class as a project listener]:class:->class' \
|
||||||
'(-f -file -buildfile -find)'{-f,-file,-buildfile}'[use specified build file]:build file:_files' \
|
'-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' \
|
'*-D[specify property with value to use]:property:->property' \
|
||||||
'-propertyfile[load properties from specified file]:property file:_files' \
|
'(-k -keep-going)'{-keep-going,-k}'[execute all targets that do not depend on failed target(s)]' \
|
||||||
'-inputhandler[specify class which will handle input requests]:class:_java_class -cp ${(j.\:.)c}' \
|
'-propertyfile[load all properties from specified file with -D properties taking precedence]:property file:_files -g "*.properties(-.)"' \
|
||||||
'(-f -file -buildfile)-find[search for build file towards the root of filesystem]:build file:(build.xml)' \
|
'-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
|
$target && ret=0
|
||||||
|
|
||||||
case $state in
|
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)
|
property)
|
||||||
if compset -P '*='; then
|
if compset -P '*='; then
|
||||||
_default
|
_default && ret=0
|
||||||
else
|
else
|
||||||
_message -e properties 'property name'
|
_message -e properties 'property name'
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
target)
|
target)
|
||||||
if zstyle -t ":completion:${curcontext}:targets" call-command; then
|
if [[ -n $opt_args[(I)(-s|-find)] ]]; then
|
||||||
# Run ant -projecthelp also passing any of -find, -buildfile or -f options.
|
buildfile=( (../)#${(v)opt_args[(I)(-s|-find)]:-build.xml}(N[-1]) )
|
||||||
# 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
|
else
|
||||||
if [[ -n $opt_args[-find] ]]; then
|
buildfile=${(v)opt_args[(I)(-f|-file|-buildfile)]:-build.xml}
|
||||||
buildfile=( (../)#${opt_args[-find]:-build.xml}(N[-1]) )
|
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
|
else
|
||||||
buildfile=${(v)opt_args[(I)(-f|-file|-buildfile)]:-build.xml}
|
targets=( $(find_targets $buildfile) )
|
||||||
fi
|
_wanted targets expl target compadd -a targets && ret=0
|
||||||
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
|
||||||
|
else
|
||||||
|
_message -e targets target
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue