diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2005-09-02 09:17:32 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2005-09-02 09:17:32 +0000 |
commit | 16c84ec8ded6a2a64106b76d56db9bedb099148e (patch) | |
tree | 6317cdc88a2222d16e18ba8a67de3e46f23bdcdb | |
parent | a4d443af4390a2669a71dd741643d6a0c03cfc3d (diff) | |
download | zsh-16c84ec8ded6a2a64106b76d56db9bedb099148e.tar.gz zsh-16c84ec8ded6a2a64106b76d56db9bedb099148e.tar.xz zsh-16c84ec8ded6a2a64106b76d56db9bedb099148e.zip |
21693: Jean-Baptiste Quenot: recursively find ant targets
-rw-r--r-- | Completion/Unix/Command/_ant | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/Completion/Unix/Command/_ant b/Completion/Unix/Command/_ant index 2c0e252d6..bf70915d7 100644 --- a/Completion/Unix/Command/_ant +++ b/Completion/Unix/Command/_ant @@ -6,6 +6,18 @@ 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) ) + targets=( $(sed -n "s/ *<target[^>]* name=[\"']\([^\"']*\)[\"'].*/\1/p" $1) ) + if (( $#importedfiles )) ; then + cd $1:h + for file in $importedfiles ; do + find_targets $file + done + fi + _wanted targets expl target compadd -a targets && ret=0 +} + if [[ $service = *ANT_ARGS* ]]; then compset -q words=( fake "$words[@]" ) @@ -114,11 +126,7 @@ case $state in )//$'\015'}" _describe 'target' tmp && ret=0 else - 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 + find_targets $buildfile fi else _message -e targets target |