# Extracts information from a distribution file by unpacking in a temporary
# directory and then using projectdata on that.
import os
import shutil
import tempfile
import zipfile
import tarfile

from pyroma import projectdata


def get_data(path):
    filename = os.path.split(path)[-1]
    basename, ext = os.path.splitext(filename)
    if basename.endswith(".tar"):
        basename, ignored = os.path.splitext(basename)

    try:
        tempdir = tempfile.mkdtemp()

        if ext in (".bz2", ".tbz", "tb2", ".gz", ".tgz", ".tar"):
            tarfile.open(name=path, mode="r:*").extractall(tempdir)

        elif ext in (".zip", ".egg"):
            zipfile.ZipFile(path, mode="r").extractall(tempdir)

        else:
            raise ValueError("Unknown file type: " + ext)

        projectpath = os.path.join(tempdir, basename)
        data = projectdata.get_data(projectpath)

    finally:
        shutil.rmtree(tempdir)

    return data
