From d13770b32af3560c574dc20fd11225eadb246d9a Mon Sep 17 00:00:00 2001 From: Seblu Date: Mon, 3 Jan 2011 12:24:24 +0100 Subject: [PATCH] better start display fix ctrl+d bug in cmd start (and others) --- cccli/cli.py | 27 ++++++++++++++------------- cccli/command.py | 30 +++++++++++++++++++----------- 2 files changed, 33 insertions(+), 24 deletions(-) diff --git a/cccli/cli.py b/cccli/cli.py index 124feaf..97b6a11 100644 --- a/cccli/cli.py +++ b/cccli/cli.py @@ -89,11 +89,20 @@ class Cli(object): prompt = "" while True: try: - argv = shlex.split(self.printer.getline(prompt), comments=True) - except ValueError as e: - print type(e) - self.printer.error("Lexer: %s"%str(e)) - continue + try: + argv = shlex.split(self.printer.getline(prompt), comments=True) + except ValueError as e: + print type(e) + self.printer.error("Lexer: %s"%str(e)) + continue + if len(argv) == 0: + continue + # alias subsitution + if argv[0] in self.alias: + oldargv = argv[1:] + argv = shlex.split(self.alias[argv[0]]) + argv.extend(oldargv) + self._exec_command(argv) except KeyboardInterrupt: self.printer.out("") continue @@ -101,14 +110,6 @@ class Cli(object): break except SystemExit: break - if len(argv) == 0: - continue - # alias subsitution - if argv[0] in self.alias: - oldargv = argv[1:] - argv = shlex.split(self.alias[argv[0]]) - argv.extend(oldargv) - self._exec_command(argv) if self.interactive: self.printer.out("tcho!") diff --git a/cccli/command.py b/cccli/command.py index e534205..137f964 100644 --- a/cccli/command.py +++ b/cccli/command.py @@ -226,20 +226,28 @@ class Command(object): raise cmdBadArgument() tql = str.join("", argv[1:]) # print tql list result - items = self.cli.rpc.list(tql) - if len(items) == 0: - self.printer.out("No selected object") - return - self.printer.out("Your request give the following result:") - for item in items: - self.printer.out("%s"%item["id"]) - self.printer.out("Count: %s"%len(items)) - if self.printer.ask("Are you sure to %s? (yes/NO) "%argv[0], "yes") != "yes": + try: + objs = self.cli.rpc.list(tql) + except RpcError as e: + raise cmdError("RPCError: %s"%str(e)) + if len(objs) == 0: + raise cmdWarning("No selected object") + self.printer.out("You request give the following result:") + for obj in objs: + self.printer.out("%sid:%s%s%s"%(color["green"],color["yellow"],obj["id"],color["reset"])) + self.printer.out("%sCount: %s%s"%(color["green"],color["reset"], len(objs))) + if self.printer.ask("Are you sure to %s%s%s these %s id? (yes/NO) "%(color["lred"], + argv[0], + color["reset"], + len(objs)), "yes") != "yes": raise cmdWarning("Aborted") - if len(items) > 5: + if len(objs) > 5: if self.printer.ask("You request is on more than 5 objets. Are you really sure to %s its? (Yes, I am) "%argv[0], "Yes, I am") != "Yes, I am": raise cmdWarning("Aborted") - self.cli.rpc[argv[0]](tql) + try: + self.cli.rpc[argv[0]](tql) + except RpcError as e: + raise cmdError("RPCError: %s"%str(e)) def cmd_start(self, argv): '''Start objects''' -- GitLab