diff options
author | Ryan Brown <sb@ryansb.com> | 2016-10-14 12:19:36 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-10-14 12:19:36 -0400 |
commit | 352088bd94482be3a524845ef0173ce78fa0e790 (patch) | |
tree | 77928abe647147525548f61588bca8ffea037d0f /files | |
parent | d4fa1f2037a01c0af34f2729cc2144ed91940b76 (diff) | |
download | ansible-modules-extras-352088bd94482be3a524845ef0173ce78fa0e790.tar.gz |
Fix `archive` truncating archived file names based on prefix length (#3124)
When archiving multiple files, the full length of the calculated
`arcroot` would be removed from the beginning of all file names. If
there was no arcroot, the first two characters of all files would be
removed, so `file.txt` would become `le.txt`.
This patch uses the regular expressions substitution anchored to the
start of the string, so the arcroot is only removed if it is actually
present.
Diffstat (limited to 'files')
-rw-r--r-- | files/archive.py | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/files/archive.py b/files/archive.py index 2b927e39..3b11d86b 100644 --- a/files/archive.py +++ b/files/archive.py @@ -245,6 +245,7 @@ def main(): elif format == 'tar': arcfile = tarfile.open(dest, 'w') + match_root = re.compile('^%s' % re.escape(arcroot)) for path in archive_paths: if os.path.isdir(path): # Recurse into directories @@ -254,7 +255,7 @@ def main(): for dirname in dirnames: fullpath = dirpath + dirname - arcname = fullpath[len(arcroot):] + arcname = match_root.sub('', fullpath) try: if format == 'zip': @@ -268,7 +269,7 @@ def main(): for filename in filenames: fullpath = dirpath + filename - arcname = fullpath[len(arcroot):] + arcname = match_root.sub('', fullpath) if not filecmp.cmp(fullpath, dest): try: @@ -283,9 +284,9 @@ def main(): errors.append('Adding %s: %s' % (path, str(e))) else: if format == 'zip': - arcfile.write(path, path[len(arcroot):]) + arcfile.write(path, match_root.sub('', path)) else: - arcfile.add(path, path[len(arcroot):], recursive=False) + arcfile.add(path, match_root.sub('', path), recursive=False) successes.append(path) |