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:
commit
ce34397cf8
2 changed files with 26 additions and 2 deletions
|
@ -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)
|
||||||
|
|
|
@ -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'"
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue