diff --git a/lib/ansible/constants.py b/lib/ansible/constants.py index d277c717b5..6dad199e9b 100644 --- a/lib/ansible/constants.py +++ b/lib/ansible/constants.py @@ -278,6 +278,9 @@ COLOR_SKIP = get_config(p, 'colors', 'skip', 'ANSIBLE_COLOR_SKIP', 'cyan' COLOR_UNREACHABLE = get_config(p, 'colors', 'unreachable', 'ANSIBLE_COLOR_UNREACHABLE', 'bright red') COLOR_OK = get_config(p, 'colors', 'ok', 'ANSIBLE_COLOR_OK', 'green') COLOR_CHANGED = get_config(p, 'colors', 'ok', 'ANSIBLE_COLOR_CHANGED', 'yellow') +COLOR_DIFF_ADD = get_config(p, 'colors', 'diff_add', 'ANSIBLE_COLOR_DIFF_ADD', 'green') +COLOR_DIFF_REMOVE = get_config(p, 'colors', 'diff_remove', 'ANSIBLE_COLOR_DIFF_REMOVE', 'red') +COLOR_DIFF_LINES = get_config(p, 'colors', 'diff_lines', 'ANSIBLE_COLOR_DIFF_LINES', 'cyan') # non-configurable things MODULE_REQUIRE_ARGS = ['command', 'shell', 'raw', 'script'] diff --git a/lib/ansible/plugins/callback/__init__.py b/lib/ansible/plugins/callback/__init__.py index 1fa6c03753..58904420af 100644 --- a/lib/ansible/plugins/callback/__init__.py +++ b/lib/ansible/plugins/callback/__init__.py @@ -28,6 +28,7 @@ from ansible.compat.six import string_types from ansible import constants as C from ansible.vars import strip_internal_keys +from ansible.utils.color import stringc from ansible.utils.unicode import to_unicode try: @@ -134,9 +135,17 @@ class CallbackBase: fromfiledate='', tofiledate='', n=10) - difflines = list(differ) - if difflines: - ret.extend(difflines) + has_diff = False + for line in differ: + has_diff = True + if line.startswith('+'): + line = stringc(line, C.COLOR_DIFF_ADD) + elif line.startswith('-'): + line = stringc(line, C.COLOR_DIFF_REMOVE) + elif line.startswith('@@'): + line = stringc(line, C.COLOR_DIFF_LINES) + ret.append(line) + if has_diff: ret.append('\n') if 'prepared' in diff: ret.append(to_unicode(diff['prepared']))