1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

Merge pull request #10399 from underyx/assemble-with-prefix-and-suffix

Add prefixing and suffixing fuctionality to assemble module
This commit is contained in:
Chris Houseknecht 2016-05-31 18:16:23 -04:00
commit ce34397cf8
2 changed files with 26 additions and 2 deletions

View file

@ -32,7 +32,7 @@ class ActionModule(ActionBase):
TRANSFERS_FILES = True TRANSFERS_FILES = True
def _assemble_from_fragments(self, src_path, delimiter=None, compiled_regexp=None, ignore_hidden=False): def _assemble_from_fragments(self, src_path, delimiter=None, compiled_regexp=None, ignore_hidden=False, header=None, footer=None):
''' assemble a file from a directory of fragments ''' ''' assemble a file from a directory of fragments '''
tmpfd, temp_path = tempfile.mkstemp() tmpfd, temp_path = tempfile.mkstemp()
@ -40,6 +40,11 @@ class ActionModule(ActionBase):
delimit_me = False delimit_me = False
add_newline = False add_newline = False
if header is not None:
if not header.endswith('\n'):
header += '\n'
tmp.write(header)
for f in sorted(os.listdir(src_path)): for f in sorted(os.listdir(src_path)):
if compiled_regexp and not compiled_regexp.search(f): if compiled_regexp and not compiled_regexp.search(f):
continue continue
@ -70,6 +75,13 @@ class ActionModule(ActionBase):
else: else:
add_newline = True add_newline = True
if footer is not None:
if add_newline: # last fragment did not end with \n
footer = '\n' + footer
if not footer.endswith('\n'):
footer += '\n'
tmp.write(footer)
tmp.close() tmp.close()
return temp_path return temp_path
@ -87,6 +99,8 @@ class ActionModule(ActionBase):
src = self._task.args.get('src', None) src = self._task.args.get('src', None)
dest = self._task.args.get('dest', None) dest = self._task.args.get('dest', None)
delimiter = self._task.args.get('delimiter', None) delimiter = self._task.args.get('delimiter', None)
header = self._task.args.get('header', None)
footer = self._task.args.get('footer', None)
remote_src = self._task.args.get('remote_src', 'yes') remote_src = self._task.args.get('remote_src', 'yes')
regexp = self._task.args.get('regexp', None) regexp = self._task.args.get('regexp', None)
follow = self._task.args.get('follow', False) follow = self._task.args.get('follow', False)
@ -121,7 +135,7 @@ class ActionModule(ActionBase):
return result return result
# Does all work assembling the file # Does all work assembling the file
path = self._assemble_from_fragments(src, delimiter, _re, ignore_hidden) path = self._assemble_from_fragments(src, delimiter, _re, ignore_hidden, header, footer)
path_checksum = checksum_s(path) path_checksum = checksum_s(path)
dest = self._remote_expand_user(dest) dest = self._remote_expand_user(dest)

View file

@ -91,3 +91,13 @@
- "result.state == 'file'" - "result.state == 'file'"
- "result.checksum == '505359f48c65b3904127cf62b912991d4da7ed6d'" - "result.checksum == '505359f48c65b3904127cf62b912991d4da7ed6d'"
- name: test assemble with a header and a footer
assemble: src="{{output_dir}}/src" dest="{{output_dir}}/assembled6" header="prefix" footer="suffix"
register: result
- name: assert the fragments were assembled with a header and a footer
assert:
that:
- "result.state == 'file'"
- "result.checksum == 'c5cca6452da7b193427ea17583188f7a17df3b60'"