mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Merge pull request #3711 from ashorin/devel
Allow --diff on UTF-8 encoded files and templates
This commit is contained in:
commit
bdef7f1774
1 changed files with 9 additions and 2 deletions
|
@ -706,6 +706,13 @@ def make_sudo_cmd(sudo_user, executable, cmd):
|
||||||
prompt, sudo_user, executable or '$SHELL', pipes.quote(cmd))
|
prompt, sudo_user, executable or '$SHELL', pipes.quote(cmd))
|
||||||
return ('/bin/sh -c ' + pipes.quote(sudocmd), prompt)
|
return ('/bin/sh -c ' + pipes.quote(sudocmd), prompt)
|
||||||
|
|
||||||
|
_TO_UNICODE_TYPES = (unicode, type(None))
|
||||||
|
|
||||||
|
def to_unicode(value):
|
||||||
|
if isinstance(value, _TO_UNICODE_TYPES):
|
||||||
|
return value
|
||||||
|
return value.decode("utf-8")
|
||||||
|
|
||||||
def get_diff(diff):
|
def get_diff(diff):
|
||||||
# called by --diff usage in playbook and runner via callbacks
|
# called by --diff usage in playbook and runner via callbacks
|
||||||
# include names in diffs 'before' and 'after' and do diff -U 10
|
# include names in diffs 'before' and 'after' and do diff -U 10
|
||||||
|
@ -731,10 +738,10 @@ def get_diff(diff):
|
||||||
after_header = "after: %s" % diff['after_header']
|
after_header = "after: %s" % diff['after_header']
|
||||||
else:
|
else:
|
||||||
after_header = 'after'
|
after_header = 'after'
|
||||||
differ = difflib.unified_diff(diff['before'].splitlines(True), diff['after'].splitlines(True), before_header, after_header, '', '', 10)
|
differ = difflib.unified_diff(to_unicode(diff['before']).splitlines(True), to_unicode(diff['after']).splitlines(True), before_header, after_header, '', '', 10)
|
||||||
for line in list(differ):
|
for line in list(differ):
|
||||||
ret.append(line)
|
ret.append(line)
|
||||||
return "".join(ret)
|
return u"".join(ret)
|
||||||
except UnicodeDecodeError:
|
except UnicodeDecodeError:
|
||||||
return ">> the files are different, but the diff library cannot compare unicode strings"
|
return ">> the files are different, but the diff library cannot compare unicode strings"
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue