diff --git a/cccli/cli.py b/cccli/cli.py index 124feaf56e317477c8ef908be8f6ef5e4ae04768..97b6a118fd08f6555b1f65f7ee27561fd121a73c 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 e53420519ca641ad5f353a0f79e9063bdbc9c706..137f9647d4a86c2005743238c1d86aceed2f84f0 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'''