From 0963d4aee4f635879fa24ec9c539da41c5e92edc Mon Sep 17 00:00:00 2001 From: James Cammarata Date: Tue, 29 Jul 2014 14:16:47 -0500 Subject: [PATCH] Move splitter to module_utils so modules can use it and fix command arg splitting Fixes #8338 --- commands/command | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/commands/command b/commands/command index 0577182e91c..ce54c83c387 100644 --- a/commands/command +++ b/commands/command @@ -186,6 +186,7 @@ def main(): # import module snippets from ansible.module_utils.basic import * +from ansible.module_utils.splitter import * # only the command module should ever need to do this # everything else should be simple key=value @@ -211,18 +212,14 @@ class CommandModule(AnsibleModule): args = args.replace("#USE_SHELL", "") params['shell'] = True - # use shlex to split up the args, while being careful to preserve - # single quotes so they're not removed accidentally - lexer = shlex.shlex(args) - lexer.whitespace = '\t ' - lexer.whitespace_split = True - items = list(lexer) + items = split_args(args) for x in items: quoted = x.startswith('"') and x.endswith('"') or x.startswith("'") and x.endswith("'") if '=' in x and not quoted: # check to see if this is a special parameter for the command k, v = x.split('=', 1) + v = unquote(v) # because we're not breaking out quotes in the shlex split # above, the value of the k=v pair may still be quoted. If # so, remove them.