diff options
| author | Dominik Heidler <dheidler@suse.de> | 2012-05-14 15:47:42 +0200 |
|---|---|---|
| committer | Dominik Heidler <dheidler@suse.de> | 2012-06-20 17:02:49 +0200 |
| commit | 38c98c4df5b3d4b1c229db870e094d342cf56b52 (patch) | |
| tree | c670e39a06016fbe7c1ddf7652e3a4bf60ddfbc9 | |
| parent | 8637f71e2747909a31294cd64b5e7ea891dd9c12 (diff) | |
add nova-manage bash completion script
Change-Id: I856349fb0b31f32ec4570c74ebceb3563fa22547
| -rw-r--r-- | Authors | 1 | ||||
| -rwxr-xr-x | bin/nova-manage | 12 | ||||
| -rw-r--r-- | tools/nova-manage.bash_completion | 37 |
3 files changed, 50 insertions, 0 deletions
@@ -58,6 +58,7 @@ Devdeep Singh <devdeep.singh@citrix.com> Devendra Modium <dmodium@isi.edu> Devin Carlen <devin.carlen@gmail.com> Dina Belova <dbelova@mirantis.com> +Dominik Heidler <dheidler@suse.de> Don Dugger <donald.d.dugger@intel.com> Donal Lafferty <donal.lafferty@citrix.com> Dong-In David Kang <dkang@isi.edu> diff --git a/bin/nova-manage b/bin/nova-manage index 6bda2ada5..5aa841a0e 100755 --- a/bin/nova-manage +++ b/bin/nova-manage @@ -1692,6 +1692,18 @@ def main(): print "\t%s" % k sys.exit(2) category = argv.pop(0) + if category == "bash-completion": + if len(argv) < 1: + print " ".join([k for (k, v) in CATEGORIES]) + else: + query_category = argv.pop(0) + matches = lazy_match(query_category, CATEGORIES) + # instantiate the command group object + category, fn = matches[0] + command_object = fn() + actions = methods_of(command_object) + print " ".join([k for (k, v) in actions]) + sys.exit(0) matches = lazy_match(category, CATEGORIES) # instantiate the command group object category, fn = matches[0] diff --git a/tools/nova-manage.bash_completion b/tools/nova-manage.bash_completion new file mode 100644 index 000000000..053d41950 --- /dev/null +++ b/tools/nova-manage.bash_completion @@ -0,0 +1,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 |
