Source code for platform_migrator.unpack

"""This module contains a helper function to unpack a zip file
created by the ``base_sys_script`` into the right location and
format
"""


import shutil
import os
import zipfile


[docs]def unpack(packed_zip): """Unpack a zip file prepared by base_sys_script This function unpacks the zip file, removes the env.yml and min-deps.json files from it and repacks the remaining files back as pkg.zip for use with the migrator Args: :packed_zip (str): Absolute path to the zip file """ dirname = os.path.basename(packed_zip).split('.')[0] os.mkdir(dirname) os.chdir(dirname) zfile = zipfile.ZipFile(packed_zip) for name in zfile.namelist(): (dirname, filename) = os.path.split(name) if filename == '': if not os.path.isdir(dirname): os.mkdir(dirname) else: with open(name, 'wb') as f_obj: f_obj.write(zfile.read(name)) zfile.close() app_zip_file = zipfile.ZipFile('pkg.zip', 'w') app_zip_file.write(dirname) for pardir, _, files in os.walk(dirname): for filename in files: app_zip_file.write(os.path.join(pardir, filename)) app_zip_file.close() shutil.rmtree(dirname)