# -*- coding: utf-8 -*- import sys import os.path import logging import tempfile import shutil import setuptools.archive_util logger = logging.getLogger(__name__) def main(): logging.basicConfig() logger.setLevel(logging.DEBUG) src = sys.argv[1] dst = sys.argv[2] strip_toplevel_dir = True if not os.path.exists(dst): os.makedirs(dst) if not os.path.isdir(dst): logger.error('%s: not a directory', dst) if strip_toplevel_dir: tempdir = tempfile.mkdtemp() try: setuptools.archive_util.unpack_archive(src, tempdir) toplevel_items = os.listdir(tempdir) if len(toplevel_items) > 1: logger.error('%s has no single top-level directory', src) raise SystemExit(1) root = os.path.join(tempdir, toplevel_items[0]) for item in os.listdir(root): src_item = os.path.join(root, item) dst_item = os.path.join(dst, item) if os.path.exists(dst_item): if os.path.isdir(dst_item): shutil.rmtree(dst_item) else: os.unlink(dst_item) shutil.move(src_item, dst) finally: shutil.rmtree(tempdir) else: setuptools.archive_util.unpack_archive(src, dst)