Browse Source

Meta: Extract .zip file directories in an encoding-agnostic manner

The current implementation fails if a file in the archive is not valid
UTF-8. The CLDR 44.0.1 package unfortunately contains such files (it
errantly has .DS_Store files).
Timothy Flynn 1 year ago
parent
commit
19d50ee2c2
1 changed files with 2 additions and 6 deletions
  1. 2 6
      Meta/gn/build/extract_archive_contents.py

+ 2 - 6
Meta/gn/build/extract_archive_contents.py

@@ -47,15 +47,11 @@ def extract_directory(file, destination, path):
     destination_path.mkdir(parents=True, exist_ok=True)
     destination_path.mkdir(parents=True, exist_ok=True)
     if not isinstance(file, zipfile.ZipFile):
     if not isinstance(file, zipfile.ZipFile):
         raise NotImplementedError
         raise NotImplementedError
+
     # FIXME: This loops over the entire archive len(args.paths) times. Decrease complexity
     # FIXME: This loops over the entire archive len(args.paths) times. Decrease complexity
     for entry in file.namelist():
     for entry in file.namelist():
         if entry.startswith(path):
         if entry.startswith(path):
-            entry_destination = destination / entry
-            if entry.endswith('/'):
-                entry_destination.mkdir(exist_ok=True)
-                continue
-            with file.open(entry) as member:
-                entry_destination.write_text(member.read().decode('utf-8'))
+            file.extract(entry, destination)
 
 
 
 
 def main():
 def main():