diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | Completion/Unix/Command/_ant | 156 |
2 files changed, 96 insertions, 66 deletions
diff --git a/ChangeLog b/ChangeLog index e1ff64307..c4eaddbcc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-06-02 Doug Kearns <djkea2@gus.gscit.monash.edu.au> + + * 21293: Completion/Unix/Command/_ant: update ant completion for + version 1.6.4; always use the -find and -buildfile options when + completing targets + 2005-06-01 Peter Stephenson <pws@csr.com> * unposted: Src/builtin.c: need const for result of getsigname(). diff --git a/Completion/Unix/Command/_ant b/Completion/Unix/Command/_ant index 6ef0e733d..e2f4a9dc5 100644 --- a/Completion/Unix/Command/_ant +++ b/Completion/Unix/Command/_ant @@ -1,11 +1,10 @@ #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' +# Apache Ant version 1.6.4 -c=( $ANT_HOME/lib/*.jar ) +local curcontext="$curcontext" state line ret=1 +typeset -A opt_args +local buildfile classpath cp userjars importedfiles target='*:target:->target' targets tmp if [[ $service = *ANT_ARGS* ]]; then compset -q @@ -15,86 +14,111 @@ if [[ $service = *ANT_ARGS* ]]; then fi _arguments -C \ - '-help[display usage information]' \ - '-projecthelp[print project help information]' \ - '-version[display version information]' \ - '-diagnostics[display info useful to problem diagnosis]' \ + '(- *)'{-h,-help}'[display help information]' \ + '(-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 more verbose]' \ - '-debug[print debugging information]' \ - '-emacs[produce logging information without adornments]' \ + '(-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[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' \ + '-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' \ - '-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)' \ + '(-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 + _default && ret=0 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 + if [[ -n $opt_args[(I)(-s|-find)] ]]; then + buildfile=( (../)#${(v)opt_args[(I)(-s|-find)]:-build.xml}(N[-1]) ) else - if [[ -n $opt_args[-find] ]]; then - buildfile=( (../)#${opt_args[-find]:-build.xml}(N[-1]) ) + 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 - 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 + sed -n "s/ *<target[^>]* name=[\"']\([^\"']*\)[\"'].*/\1/p" $importedfiles) ) + _wanted targets expl target compadd -a targets && ret=0 fi + else + _message -e targets target fi ;; esac |