Loading tools/releasetools/common.py +17 −15 Original line number Diff line number Diff line Loading @@ -2868,30 +2868,32 @@ def ZipWriteStr(zip_file, zinfo_or_arcname, data, perms=None, def ZipDelete(zip_filename, entries, force=False): """Deletes entries from a ZIP file. Since deleting entries from a ZIP file is not supported, it shells out to 'zip -d'. Args: zip_filename: The name of the ZIP file. entries: The name of the entry, or the list of names to be deleted. Raises: AssertionError: In case of non-zero return from 'zip'. """ if isinstance(entries, str): entries = [entries] # If list is empty, nothing to do if not entries: return if force: cmd = ["zip", "-q", "-d", zip_filename] + entries else: cmd = ["zip", "-d", zip_filename] + entries if force: p = Run(cmd) p.wait() else: RunAndCheckOutput(cmd) with zipfile.ZipFile(zip_filename, 'r') as zin: if not force and len(set(zin.namelist()).intersection(entries)) == 0: raise ExternalError( "Failed to delete zip entries, name not matched: %s" % entries) fd, new_zipfile = tempfile.mkstemp(dir=os.path.dirname(zip_filename)) os.close(fd) with zipfile.ZipFile(new_zipfile, 'w') as zout: for item in zin.infolist(): if item.filename in entries: continue buffer = zin.read(item.filename) zout.writestr(item, buffer) os.replace(new_zipfile, zip_filename) def ZipClose(zip_file): Loading Loading
tools/releasetools/common.py +17 −15 Original line number Diff line number Diff line Loading @@ -2868,30 +2868,32 @@ def ZipWriteStr(zip_file, zinfo_or_arcname, data, perms=None, def ZipDelete(zip_filename, entries, force=False): """Deletes entries from a ZIP file. Since deleting entries from a ZIP file is not supported, it shells out to 'zip -d'. Args: zip_filename: The name of the ZIP file. entries: The name of the entry, or the list of names to be deleted. Raises: AssertionError: In case of non-zero return from 'zip'. """ if isinstance(entries, str): entries = [entries] # If list is empty, nothing to do if not entries: return if force: cmd = ["zip", "-q", "-d", zip_filename] + entries else: cmd = ["zip", "-d", zip_filename] + entries if force: p = Run(cmd) p.wait() else: RunAndCheckOutput(cmd) with zipfile.ZipFile(zip_filename, 'r') as zin: if not force and len(set(zin.namelist()).intersection(entries)) == 0: raise ExternalError( "Failed to delete zip entries, name not matched: %s" % entries) fd, new_zipfile = tempfile.mkstemp(dir=os.path.dirname(zip_filename)) os.close(fd) with zipfile.ZipFile(new_zipfile, 'w') as zout: for item in zin.infolist(): if item.filename in entries: continue buffer = zin.read(item.filename) zout.writestr(item, buffer) os.replace(new_zipfile, zip_filename) def ZipClose(zip_file): Loading