summaryrefslogtreecommitdiff
path: root/tools/nova-manage.bash_completion
blob: 0088a522feb182aef8c4836c2a0f142f34001246 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# bash completion for openstack nova-manage

_nova_manage_opts="" # lazy init
_nova_manage_opts_exp="" # lazy init

# dict hack for bash 3
_set_nova_manage_subopts () {
  eval _nova_manage_subopts_"$1"='$2'
}
_get_nova_manage_subopts () {
  eval echo '${_nova_manage_subopts_'"$1"'#_nova_manage_subopts_}'
}

_nova_manage()
{
    local cur prev subopts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    if [ "x$_nova_manage_opts" == "x" ] ; then
        _nova_manage_opts="`nova-manage bash-completion 2>/dev/null`"
        _nova_manage_opts_exp="`echo $_nova_manage_opts | sed -e "s/\s/|/g"`"
    fi

    if [[ " `echo $_nova_manage_opts` " =~ " $prev " ]] ; then
        if [ "x$(_get_nova_manage_subopts "$prev")" == "x" ] ; then
            subopts="`nova-manage bash-completion $prev 2>/dev/null`"
            _set_nova_manage_subopts "$prev" "$subopts"
        fi
        COMPREPLY=($(compgen -W "$(_get_nova_manage_subopts "$prev")" -- ${cur}))
    elif [[ ! " ${COMP_WORDS[@]} " =~ " "($_nova_manage_opts_exp)" " ]] ; then
        COMPREPLY=($(compgen -W "${_nova_manage_opts}" -- ${cur}))
    fi
    return 0
}
complete -F _nova_manage nova-manage