diff options
Diffstat (limited to 'completions/ant')
-rw-r--r-- | completions/ant | 64 |
1 files changed, 29 insertions, 35 deletions
diff --git a/completions/ant b/completions/ant index 132c4390..96ef8172 100644 --- a/completions/ant +++ b/completions/ant @@ -1,13 +1,9 @@ -# bash completion for ant +# bash completion for ant and phing -*- shell-script -*- -have ant && -{ _ant() { - local cur prev buildfile i - - COMPREPLY=() - _get_comp_words_by_ref cur prev + local cur prev words cword + _init_completion || return case $prev in -buildfile|-file|-f) @@ -23,48 +19,46 @@ _ant() return 0 ;; -nice) - COMPREPLY=( $( compgen -W '1 2 3 4 5 6 7 8 9 10' -- "$cur" ) ) + COMPREPLY=( $( compgen -W '{1..10}' -- "$cur" ) ) + return 0 + ;; + -lib) + _filedir -d return 0 ;; - -lib|-logger|-listener|-D|-inputhandler|-main) + -logger|-listener|-inputhandler|-main|-find|-s) return 0 ;; esac - if [[ "$cur" == -* ]]; then - COMPREPLY=( $( compgen -W '-help -projecthelp -version -diagnostics \ - -quiet -verbose -debug -emacs -lib -logfile -logger -listener \ - -noinput -buildfile -D -keep-going -propertyfile -inputhandler \ - -find -s -nice -nouserlib -noclasspath -autoproxy -main' \ - -- "$cur" ) ) + if [[ $cur == -D* ]]; then + return 0 + elif [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '$( _parse_help "$1" -h )' -- "$cur" ) ) else # available targets completion # find which buildfile to use - buildfile=build.xml - for (( i=1; i < COMP_CWORD; i++ )); do - if [[ "${COMP_WORDS[i]}" == -@(?(build)file|f) ]]; then - buildfile=${COMP_WORDS[i+1]} + local buildfile=build.xml i + for (( i=1; i < cword; i++ )); do + if [[ "${words[i]}" == -@(?(build)file|f) ]]; then + buildfile=${words[i+1]} break fi done [ ! -f $buildfile ] && return 0 # parse buildfile for targets - # some versions of sed complain if there's no trailing linefeed, - # hence the 2>/dev/null - COMPREPLY=( $( compgen -W "$( cat $buildfile | tr "'\t\n>" "\" \n" | \ - sed -ne 's/.*<target .*name="\([^"]*\).*/\1/p' 2>/dev/null )" \ - -- "$cur" ) ) - fi -} -have complete-ant-cmd.pl && \ - complete -C complete-ant-cmd.pl -F _ant ant || complete -F _ant ant -} + local line targets + while read -rd '>' line; do + [[ $line =~ \ + \<(targe|extension-poin)t[[:space:]].*name=[\"\']([^\"\']+) ]] \ + && targets+=" ${BASH_REMATCH[2]}" + done < $buildfile + COMPREPLY=( $( compgen -W '$targets' -- "$cur" ) ) + fi +} && +complete -F _ant ant phing +type complete-ant-cmd.pl &>/dev/null && \ + complete -C complete-ant-cmd.pl -F _ant ant || : -# Local variables: -# mode: shell-script -# sh-basic-offset: 4 -# sh-indent-comment: t -# indent-tabs-mode: nil -# End: # ex: ts=4 sw=4 et filetype=sh |