@ -200,6 +200,13 @@ def _walk_dirs(topdir, base_path=None, local_follow=False, trailing_slash_detect
return r_files
def combine_result_diffs ( dest , source ) :
if not source . get ( " diff " , None ) :
return
if isinstance ( source [ " diff " ] , list ) :
dest [ " diff " ] + = source [ " diff " ]
else :
dest [ " diff " ] . append ( source [ " diff " ] )
class ActionModule ( ActionBase ) :
@ -417,6 +424,7 @@ class ActionModule(ActionBase):
remote_src = boolean ( self . _task . args . get ( ' remote_src ' , False ) , strict = False )
local_follow = boolean ( self . _task . args . get ( ' local_follow ' , True ) , strict = False )
result [ ' diff ' ] = [ ]
result [ ' failed ' ] = True
if not source and content is None :
result [ ' msg ' ] = ' src (or content) is required '
@ -529,10 +537,10 @@ class ActionModule(ActionBase):
for dir_component in paths :
os . path . join ( dir_path , dir_component )
implicit_directories . add ( dir_path )
if ' diff ' in result and not result [ ' diff ' ] :
del result [ ' diff ' ]
module_executed = True
changed = changed or module_return . get ( ' changed ' , False )
combine_result_diffs ( result , module_return )
for src , dest_path in source_files [ ' directories ' ] :
# Find directories that are leaves as they might not have been
@ -556,6 +564,7 @@ class ActionModule(ActionBase):
module_executed = True
changed = changed or module_return . get ( ' changed ' , False )
combine_result_diffs ( result , module_return )
for target_path , dest_path in source_files [ ' symlinks ' ] :
# Copy symlinks over
@ -582,6 +591,7 @@ class ActionModule(ActionBase):
return self . _ensure_invocation ( result )
changed = changed or module_return . get ( ' changed ' , False )
combine_result_diffs ( result , module_return )
if module_executed and len ( source_files [ ' files ' ] ) == 1 :
result . update ( module_return )
@ -593,6 +603,9 @@ class ActionModule(ActionBase):
else :
result . update ( dict ( dest = dest , src = source , changed = changed ) )
if ' diff ' in result and not result [ ' diff ' ] :
del result [ ' diff ' ]
# Delete tmp path
self . _remove_tmp_path ( self . _connection . _shell . tmpdir )