diff options
| author | Bryan Galdrikian <[email protected]> | 2017-02-21 12:07:59 -0800 |
|---|---|---|
| committer | Bryan Galdrikian <[email protected]> | 2017-02-21 12:07:59 -0800 |
| commit | 446ce137c6823ba9eff273bdafdaf266287c7c98 (patch) | |
| tree | d20aab3e2ed08d7b3ca71c2f40db6a93ea00c459 /NvBlast/buildtools/packman/windows/configure/install_package.py | |
| download | blast-446ce137c6823ba9eff273bdafdaf266287c7c98.tar.xz blast-446ce137c6823ba9eff273bdafdaf266287c7c98.zip | |
first commitv1.0.0-beta
Diffstat (limited to 'NvBlast/buildtools/packman/windows/configure/install_package.py')
| -rw-r--r-- | NvBlast/buildtools/packman/windows/configure/install_package.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/NvBlast/buildtools/packman/windows/configure/install_package.py b/NvBlast/buildtools/packman/windows/configure/install_package.py new file mode 100644 index 0000000..730962a --- /dev/null +++ b/NvBlast/buildtools/packman/windows/configure/install_package.py @@ -0,0 +1,39 @@ +import logging +import zipfile +import tempfile +import sys +import shutil + +__author__ = 'hfannar' +logging.basicConfig(level=logging.WARNING, format="%(message)s") +logger = logging.getLogger('install_package') + + +class TemporaryDirectory: + def __init__(self): + self.path = None + + def __enter__(self): + self.path = tempfile.mkdtemp() + return self.path + + def __exit__(self, type, value, traceback ): + # Remove temporary data created + shutil.rmtree(self.path) + + +def install_package(package_src_path, package_dst_path): + with zipfile.ZipFile(package_src_path, allowZip64=True) as zip_file, TemporaryDirectory() as temp_dir: + zip_file.extractall(temp_dir) + # Recursively copy (temp_dir will be automatically cleaned up on exit) + try: + # Recursive copy is needed because both package name and version folder could be missing in + # target directory: + shutil.copytree(temp_dir, package_dst_path) + except OSError, exc: + logger.warning("Directory %s already present, packaged installation aborted" % package_dst_path) + else: + logger.info("Package successfully installed to %s" % package_dst_path) + + +install_package(sys.argv[1], sys.argv[2])
\ No newline at end of file |