You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bh...@apache.org on 2012/12/13 00:22:47 UTC

git commit: cli: Handle command breaks, ctrl+c, don't break the shell

Updated Branches:
  refs/heads/master c8926de01 -> 1551b982c


cli: Handle command breaks, ctrl+c, don't break the shell

- Fix handles shell loop
- Handles any control breaks without breaking the shell
- Handles ctrl+c to start afresh on the shell

Signed-off-by: Rohit Yadav <bh...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/1551b982
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/1551b982
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/1551b982

Branch: refs/heads/master
Commit: 1551b982c4f733bd85a72f48c9f7eb9782462ddd
Parents: c8926de
Author: Rohit Yadav <bh...@apache.org>
Authored: Wed Dec 12 15:21:03 2012 -0800
Committer: Rohit Yadav <bh...@apache.org>
Committed: Wed Dec 12 15:21:03 2012 -0800

----------------------------------------------------------------------
 tools/cli/cloudmonkey/cloudmonkey.py |   14 +++++++++++---
 1 files changed, 11 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/1551b982/tools/cli/cloudmonkey/cloudmonkey.py
----------------------------------------------------------------------
diff --git a/tools/cli/cloudmonkey/cloudmonkey.py b/tools/cli/cloudmonkey/cloudmonkey.py
index 8ceba4a..250ea68 100644
--- a/tools/cli/cloudmonkey/cloudmonkey.py
+++ b/tools/cli/cloudmonkey/cloudmonkey.py
@@ -65,7 +65,7 @@ logger = logging.getLogger(__name__)
 completions = cloudstackAPI.__all__
 
 
-class CloudStackShell(cmd.Cmd):
+class CloudStackShell(cmd.Cmd, object):
     intro = ("☁ Apache CloudStack 🐵 cloudmonkey " + __version__ +
              ". Type help or ? to list commands.\n")
     ruler = "="
@@ -133,6 +133,15 @@ class CloudStackShell(cmd.Cmd):
     def emptyline(self):
         pass
 
+    def cmdloop(self, intro=None):
+        print self.intro
+        while True:
+            try:
+                super(CloudStackShell, self).cmdloop(intro = "")
+                self.postloop()
+            except KeyboardInterrupt:
+                print("^C")
+
     def print_shell(self, *args):
         try:
             for arg in args:
@@ -273,7 +282,6 @@ class CloudStackShell(cmd.Cmd):
                                         x.partition("=")[2]],
                              args[1:])[x] for x in range(len(args) - 1))
 
-        # FIXME: With precaching, dynamic loading can be removed
         api_cmd_str = "%sCmd" % api_name
         api_mod = self.get_api_module(api_name, [api_cmd_str])
         if api_mod is None:
@@ -466,7 +474,7 @@ class CloudStackShell(cmd.Cmd):
         """
         Quit on Ctrl+d or EOF
         """
-        return True
+        sys.exit()
 
 
 def main():