From 7ae8c4ad7ec37c089e9cade0239faa7cde223896 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Thu, 15 Nov 2012 18:18:50 +0530 Subject: [PATCH] cli: Split using only space Patch fixes lexical parser for default argument on shell. Signed-off-by: Rohit Yadav --- tools/cli/cloudmonkey/cloudmonkey.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/tools/cli/cloudmonkey/cloudmonkey.py b/tools/cli/cloudmonkey/cloudmonkey.py index 83bd8c1c6a9..4ba6dbf7df9 100644 --- a/tools/cli/cloudmonkey/cloudmonkey.py +++ b/tools/cli/cloudmonkey/cloudmonkey.py @@ -223,7 +223,10 @@ class CloudStackShell(cmd.Cmd): return api_mod def default(self, args): - args = shlex.split(args.strip()) + lexp = shlex.shlex(args.strip()) + lexp.whitespace = " " + lexp.whitespace_split = True + args = list(lexp) api_name = args[0] try: @@ -417,6 +420,12 @@ def main(): for rule in grammar: def add_grammar(rule): def grammar_closure(self, args): + if '|' in args: #FIXME: Consider parsing issues + prog_name = sys.argv[0] + if '.py' in prog_name: + prog_name = "python " + prog_name + self.do_shell("%s %s %s" % (prog_name, rule, args)) + return if not rule in self.cache_verbs: self.cache_verb_miss(rule) try: @@ -428,13 +437,7 @@ def main(): if '--help' in args: self.print_shell(res[2]) return - if '|' in args: - prog_name = sys.argv[0] - if '.py' in prog_name: - prog_name = "python " + prog_name - self.do_shell("%s %s %s" % (prog_name, rule, args)) - else: - self.default(res[0] + " " + args_partition[2]) + self.default(res[0] + " " + args_partition[2]) return grammar_closure grammar_handler = add_grammar(rule)