mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Make sure we only use unquote on quoted lines in lineinfile when needed
This commit is contained in:
parent
542aaa6ffe
commit
83fa9a8cde
2 changed files with 17 additions and 6 deletions
|
@ -187,9 +187,12 @@ def split_args(args):
|
||||||
|
|
||||||
return params
|
return params
|
||||||
|
|
||||||
|
def is_quoted(data):
|
||||||
|
return len(data) > 0 and (data[0] == '"' and data[-1] == '"' or data[0] == "'" and data[-1] == "'")
|
||||||
|
|
||||||
def unquote(data):
|
def unquote(data):
|
||||||
''' removes first and last quotes from a string, if the string starts and ends with the same quotes '''
|
''' removes first and last quotes from a string, if the string starts and ends with the same quotes '''
|
||||||
if len(data) > 0 and (data[0] == '"' and data[-1] == '"' or data[0] == "'" and data[-1] == "'"):
|
if is_quoted(data):
|
||||||
return data[1:-1]
|
return data[1:-1]
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
|
@ -363,14 +363,22 @@ def main():
|
||||||
if ins_bef is None and ins_aft is None:
|
if ins_bef is None and ins_aft is None:
|
||||||
ins_aft = 'EOF'
|
ins_aft = 'EOF'
|
||||||
|
|
||||||
|
line = params['line']
|
||||||
|
|
||||||
|
# The safe_eval call will remove some quoting, but not others,
|
||||||
|
# so we need to know if we should specifically unquote it.
|
||||||
|
should_unquote = not is_quoted(line)
|
||||||
|
|
||||||
# Replace escape sequences like '\n' while being sure
|
# Replace escape sequences like '\n' while being sure
|
||||||
# not to replace octal escape sequences (\ooo) since they
|
# not to replace octal escape sequences (\ooo) since they
|
||||||
# match the backref syntax
|
# match the backref syntax.
|
||||||
if backrefs:
|
if backrefs:
|
||||||
line = re.sub(r'(\\[0-9]{1,3})', r'\\\1', params['line'])
|
line = re.sub(r'(\\[0-9]{1,3})', r'\\\1', line)
|
||||||
else:
|
line = module.safe_eval(pipes.quote(line))
|
||||||
line = params['line']
|
|
||||||
line = unquote(module.safe_eval(pipes.quote(line)))
|
# Now remove quotes around the string, if needed
|
||||||
|
if should_unquote:
|
||||||
|
line = unquote(line)
|
||||||
|
|
||||||
present(module, dest, params['regexp'], line,
|
present(module, dest, params['regexp'], line,
|
||||||
ins_aft, ins_bef, create, backup, backrefs)
|
ins_aft, ins_bef, create, backup, backrefs)
|
||||||
|
|
Loading…
Add table
Reference in a new issue