Source code for crytic_compile.utils.zip

"""
Handle ZIP operations
"""
import json
from typing import List

# Cycle dependency
from typing import TYPE_CHECKING

from zipfile import ZipFile
from crytic_compile.platform.archive import generate_archive_export

if TYPE_CHECKING:
    from crytic_compile import CryticCompile


[docs]def load_from_zip(target: str) -> List["CryticCompile"]: """ Load a file from a zip :param target: :return: """ from crytic_compile.crytic_compile import CryticCompile compilations = [] with ZipFile(target, "r") as file_desc: for project in file_desc.namelist(): compilations.append( CryticCompile(str(file_desc.read(project)), compile_force_framework="archive") ) return compilations
[docs]def save_to_zip(crytic_compiles: List["CryticCompile"], zipfile: str): """ Save projects to a zip :param crytic_compiles: :param zipfile: :return: """ with ZipFile(zipfile, "w") as file_desc: for crytic_compile in crytic_compiles: output, target_name = generate_archive_export(crytic_compile) file_desc.writestr(target_name, json.dumps(output))