From 27d52fd9cc74ac0a8aac18e13d85563557479ea0 Mon Sep 17 00:00:00 2001
From: James Cammarata <jcammarata@ansibleworks.com>
Date: Thu, 6 Mar 2014 09:44:56 -0600
Subject: [PATCH] Un-escape newlines in delimiters for assemble module

---
 lib/ansible/runner/action_plugins/assemble.py | 6 ++++++
 library/files/assemble                        | 2 ++
 2 files changed, 8 insertions(+)

diff --git a/lib/ansible/runner/action_plugins/assemble.py b/lib/ansible/runner/action_plugins/assemble.py
index eb6faf5..c73964c 100644
--- a/lib/ansible/runner/action_plugins/assemble.py
+++ b/lib/ansible/runner/action_plugins/assemble.py
@@ -39,7 +39,13 @@ class ActionModule(object):
         for f in sorted(os.listdir(src_path)):
             fragment = "%s/%s" % (src_path, f)
             if delimit_me and delimiter:
+                # en-escape things like new-lines
+                delimiter = delimiter.decode('unicode-escape')
                 tmp.write(delimiter)
+                # always make sure there's a newline after the
+                # delimiter, so lines don't run together
+                if delimiter[-1] != '\n':
+                    tmp.write('\n')
             if os.path.isfile(fragment):
                 tmp.write(file(fragment).read())
             delimit_me = True
diff --git a/library/files/assemble b/library/files/assemble
index a8c7825..f4a60ca 100644
--- a/library/files/assemble
+++ b/library/files/assemble
@@ -107,6 +107,8 @@ def assemble_from_fragments(src_path, delimiter=None, compiled_regexp=None):
             continue
         fragment = "%s/%s" % (src_path, f)
         if delimit_me and delimiter:
+            # un-escape anything like newlines
+            delimiter = delimiter.decode('unicode-escape')
             tmp.write(delimiter)
             # always make sure there's a newline after the 
             # delimiter, so lines don't run together
--
libgit2 0.26.0