Catch and handle KeyboardInterrupt in shell
authorStavros Sachtouris <saxtouri@admin.grnet.gr>
Thu, 3 Jan 2013 12:30:50 +0000 (14:30 +0200)
committerStavros Sachtouris <saxtouri@admin.grnet.gr>
Thu, 3 Jan 2013 12:30:50 +0000 (14:30 +0200)
kamaki/cli/__init__.py
kamaki/cli/command_shell.py

index 62b28e1..af47efb 100644 (file)
@@ -38,7 +38,7 @@ from inspect import getargspec
 
 from kamaki.cli.argument import ArgumentParseManager
 from kamaki.cli.history import History
-from kamaki.cli.utils import print_dict, print_list, red, magenta, yellow
+from kamaki.cli.utils import print_dict, red, magenta, yellow
 from kamaki.cli.errors import CLIError
 
 _help = False
index 609cdc9..bc94d5c 100644 (file)
@@ -100,6 +100,15 @@ class Shell(Cmd):
     def set_prompt(self, new_prompt):
         self.prompt = '%s%s%s' % (self._prefix, new_prompt, self._suffix)
 
+    def cmdloop(self):
+        while True:
+            try:
+                Cmd.cmdloop(self)
+            except KeyboardInterrupt:
+                print(' - interrupted')
+                continue
+            break
+
     def do_exit(self, line):
         print('')
         if self.prompt[len(self._prefix):-len(self._suffix)]\
@@ -281,6 +290,7 @@ class Shell(Cmd):
 
         try:
             self.cmdloop()
-        except Exception:
+        except Exception as e:
+            print('(%s)' % e)
             from traceback import print_stack
             print_stack()