From a259f6533cd5ccbb5d1ebb8ce684cd70ae056ea5 Mon Sep 17 00:00:00 2001 From: sinhan Date: Thu, 11 May 2017 17:53:47 +0000 Subject: [PATCH] [RIFT 16497] During extraction of packages, collapse empty nested folders. Signed-off-by: sinhan --- .../rwlaunchpadtasklet/rift/package/package.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/rwlaunchpad/plugins/rwlaunchpadtasklet/rift/package/package.py b/rwlaunchpad/plugins/rwlaunchpadtasklet/rift/package/package.py index 2859b1be..6f77985f 100644 --- a/rwlaunchpad/plugins/rwlaunchpadtasklet/rift/package/package.py +++ b/rwlaunchpad/plugins/rwlaunchpadtasklet/rift/package/package.py @@ -431,10 +431,21 @@ class DescriptorPackage(object): 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. -- 2.25.1