1# bash completion for ctest(1)                             -*- shell-script -*-
2
3_ctest()
4{
5    local cur prev words cword
6    if type -t _init_completion >/dev/null; then
7        _init_completion -n = || return
8    else
9        # manual initialization for older bash completion versions
10        COMPREPLY=()
11        cur="${COMP_WORDS[COMP_CWORD]}"
12        prev="${COMP_WORDS[COMP_CWORD-1]}"
13    fi
14
15    case "$prev" in
16        -C|--build-config)
17            COMPREPLY=( $( compgen -W 'Debug Release RelWithDebInfo
18                MinSizeRel' -- "$cur" ) )
19            return
20            ;;
21        -j|--parallel)
22            COMPREPLY=( $( compgen -W "{1..$(( $(_ncpus)*2 ))}" -- "$cur" ) )
23            return
24            ;;
25        -O|--output-log|-A|--add-notes|--extra-submit)
26            _filedir
27            return
28            ;;
29        -L|--label-regex|-LE|--label-exclude)
30            COMPREPLY=( $( compgen -W '$( ctest --print-labels 2>/dev/null |
31                grep "^  " 2>/dev/null | cut -d" " -f 3 )' -- "$cur" ) )
32            return
33            ;;
34        --track|-I|--tests-information|--max-width|--timeout|--stop-time)
35            # argument required but no completions available
36            return
37            ;;
38        -R|--tests-regex|-E|--exclude-regex)
39            COMPREPLY=( $( compgen -W '$( ctest -N 2>/dev/null |
40                grep "^  Test" 2>/dev/null | cut -d: -f 2 )' -- "$cur" ) )
41            return
42            ;;
43        -D|--dashboard)
44            if [[ $cur == @(Experimental|Nightly|Continuous)* ]]; then
45                local model action
46                action=${cur#@(Experimental|Nightly|Continuous)}
47                model=${cur%"$action"}
48                COMPREPLY=( $( compgen -W 'Start Update Configure Build Test
49                    Coverage Submit MemCheck' -P "$model" -- "$action" ) )
50            else
51                COMPREPLY=( $( compgen -W 'Experimental Nightly Continuous' \
52                -- "$cur" ) )
53                compopt -o nospace
54            fi
55            return
56            ;;
57        -M|--test-model)
58            COMPREPLY=( $( compgen -W 'Experimental Nightly Continuous' -- \
59                "$cur" ) )
60            return
61            ;;
62        -T|--test-action)
63            COMPREPLY=( $( compgen -W 'Start Update Configure Build Test
64                Coverage Submit MemCheck' -- "$cur" ) )
65            return
66            ;;
67        -S|--script|-SP|--script-new-process)
68            _filedir '@(cmake|ctest)'
69            return
70            ;;
71        --interactive-debug-mode)
72            COMPREPLY=( $( compgen -W '0 1' -- "$cur" ) )
73            return
74            ;;
75
76        --help-command)
77            COMPREPLY=( $( compgen -W '$( ctest --help-command-list 2>/dev/null|
78                grep -v "^ctest version " )' -- "$cur" ) )
79            return
80            ;;
81        --help-manual)
82            COMPREPLY=( $( compgen -W '$( ctest --help-manual-list 2>/dev/null|
83                grep -v "^ctest version " | sed -e "s/([0-9])$//" )' -- "$cur" ) )
84            return
85            ;;
86        --help-module)
87            COMPREPLY=( $( compgen -W '$( ctest --help-module-list 2>/dev/null|
88                grep -v "^ctest version " )' -- "$cur" ) )
89            return
90            ;;
91        --help-policy)
92            COMPREPLY=( $( compgen -W '$( ctest --help-policy-list 2>/dev/null |
93                grep -v "^ctest version " )' -- "$cur" ) )
94            return
95            ;;
96        --help-property)
97            COMPREPLY=( $( compgen -W '$( ctest --help-property-list \
98                2>/dev/null | grep -v "^ctest version " )' -- "$cur" ) )
99            return
100            ;;
101        --help-variable)
102            COMPREPLY=( $( compgen -W '$( ctest --help-variable-list \
103                2>/dev/null | grep -v "^ctest version " )' -- "$cur" ) )
104            return
105            ;;
106    esac
107
108    if [[ "$cur" == -* ]]; then
109        COMPREPLY=( $(compgen -W '$( _parse_help "$1" --help )' -- ${cur}) )
110        [[ $COMPREPLY == *= ]] && compopt -o nospace
111        [[ $COMPREPLY ]] && return
112    fi
113
114    _filedir
115} &&
116complete -F _ctest ctest
117
118# ex: ts=4 sw=4 et filetype=sh
119