summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDominik Heidler <dheidler@suse.de>2012-05-14 15:47:42 +0200
committerDominik Heidler <dheidler@suse.de>2012-06-20 17:02:49 +0200
commit38c98c4df5b3d4b1c229db870e094d342cf56b52 (patch)
treec670e39a06016fbe7c1ddf7652e3a4bf60ddfbc9
parent8637f71e2747909a31294cd64b5e7ea891dd9c12 (diff)
add nova-manage bash completion script
Change-Id: I856349fb0b31f32ec4570c74ebceb3563fa22547
-rw-r--r--Authors1
-rwxr-xr-xbin/nova-manage12
-rw-r--r--tools/nova-manage.bash_completion37
3 files changed, 50 insertions, 0 deletions
diff --git a/Authors b/Authors
index 0db21f28b..b1893f5e6 100644
--- a/Authors
+++ b/Authors
@@ -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