Raises:
NotADirectoryError - dest_root_dir is not a directory
"""
+ def find_prefix():
+ """ Find comon prefix of all files in package. This prefix will be
+ used to collapse directory structure during extraction to eliminate
+ empty nested folders.
+ """
+ common_dir = set()
+ for f in self.files:
+ common_dir.add(os.path.dirname(f))
+ prefix = os.path.commonprefix(list(common_dir))
+ return prefix if prefix else None
+
if not os.path.isdir(dest_root_dir):
raise NotADirectoryError(dest_root_dir)
- self.extract_dir(None, dest_root_dir, extract_images)
+ self.extract_dir(find_prefix(), dest_root_dir, extract_images)
def open(self, rel_path):
""" Open a file contained in the package in read-only, binary mode.
archive_checksums = checksums.ArchiveChecksums.from_file_desc(checksum_hdl)
except (FileNotFoundError, PackageError) as e:
self._log.warning("Could not open package checksum file. Not validating checksums.")
- return validated_file_checksums
+ return self.validated_file_checksums
for pkg_file in package.files:
if pkg_file == checksum_file:
raise PackageValidationError(msg) from e
if archive_checksums[pkg_file_no_prefix] != file_checksum:
- msg = "{} checksum ({}) did match expected checksum ({})".format(
+ msg = "{} checksum ({}) did not match expected checksum ({})".format(
pkg_file, file_checksum, archive_checksums[pkg_file_no_prefix]
)
self._log.error(msg)