]>
Commit | Line | Data |
---|---|---|
528442d6 ER |
1 | # bash completion for phing |
2 | ||
3 | have phing && | |
4 | { | |
5 | _phing() | |
6 | { | |
7 | local cur prev buildfile i | |
8 | ||
9 | COMPREPLY=() | |
10 | _get_comp_words_by_ref cur prev | |
11 | ||
12 | case $prev in | |
13 | -buildfile|-file|-f) | |
14 | _filedir 'xml' | |
15 | return 0 | |
16 | ;; | |
17 | -logfile) | |
18 | _filedir | |
19 | return 0 | |
20 | ;; | |
21 | -logger|-listener|-D|-inputhandler) | |
22 | return 0 | |
23 | ;; | |
24 | esac | |
25 | ||
26 | if [[ "$cur" == -* ]]; then | |
27 | COMPREPLY=( $( compgen -W '-help -version \ | |
28 | -quiet -verbose -debug -logfile -logger -listener \ | |
29 | -buildfile -D -inputhandler \ | |
30 | -projecthelp \ | |
31 | -find' \ | |
32 | -- "$cur" ) ) | |
33 | else | |
34 | # available targets completion | |
35 | # find which buildfile to use | |
36 | buildfile=build.xml | |
37 | for (( i=1; i < COMP_CWORD; i++ )); do | |
38 | if [[ "${COMP_WORDS[i]}" == -@(?(build)file|f) ]]; then | |
39 | buildfile=${COMP_WORDS[i+1]} | |
40 | break | |
41 | fi | |
42 | done | |
43 | [ ! -f $buildfile ] && return 0 | |
44 | ||
45 | # parse buildfile for targets | |
46 | # some versions of sed complain if there's no trailing linefeed, | |
47 | # hence the 2>/dev/null | |
48 | COMPREPLY=( $( compgen -W "$( cat $buildfile | tr "'\t\n>" "\" \n" | \ | |
49 | sed -ne 's/.*<target .*name="\([^"]*\).*/\1/p' 2>/dev/null )" \ | |
50 | -- "$cur" ) ) | |
51 | fi | |
52 | } && | |
53 | complete -F _phing phing | |
54 | } | |
55 | ||
56 | # Local variables: | |
57 | # mode: shell-script | |
58 | # sh-basic-offset: 4 | |
59 | # sh-indent-comment: t | |
60 | # indent-tabs-mode: nil | |
61 | # End: | |
62 | # ex: ts=4 sw=4 et filetype=sh |