blob: 21077be490ea55f2afb60b6327ac93b66757b2ed [file] [log] [blame] [edit]
#!/usr/bin/env python3
# Copyright (c) 2022, the R8 project authors. Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.
import os
import shutil
import subprocess
import zipfile
import utils
def add_file_to_zip(file, destination, zip_file):
with zipfile.ZipFile(zip_file, 'a') as zip:
zip.write(file, destination)
def extract_all_that_matches(zip_file, destination, predicate):
with zipfile.ZipFile(zip_file) as zip:
names_to_extract = [name for name in zip.namelist() if predicate(name)]
zip.extractall(path=destination, members=names_to_extract)
return names_to_extract
def extract_member(zip_file, member, destination):
with zipfile.ZipFile(zip_file) as zip:
with utils.TempDir() as temp:
zip.extract(member, path=temp)
shutil.move(os.path.join(temp, member), destination)
def get_names_that_matches(zip_file, predicate):
with zipfile.ZipFile(zip_file) as zip:
return [name for name in zip.namelist() if predicate(name)]
def remove_files_from_zip(files, zip_file):
assert os.path.exists(zip_file)
cmd = ['zip', '-d', zip_file] + files
subprocess.run(cmd)