#!/usr/bin/env python

import tarfile
import tempfile
import sys
import logging
import os
import re
import shutil

logging.basicConfig(format="%(asctime)s %(message)s")
LOG = logging.getLogger("root")
LOG.setLevel(logging.INFO)

OUTPUT = os.environ["OUTPUT"] if os.environ.has_key("OUTPUT") else ".."

def copy_legal_bits(src, dest):
    for fname in ["CONTRIBUTORS", "NOTICE", "LICENSE", "DISCLAIMER"]:
        shutil.copy(os.path.join(src, fname), dest)

def repack_java(root, top, version):
    exclude = lambda f: "Makefile" in f

    LOG.info("Creating Java archive...")
    package_name = "libthrift-java_%s" % version
    sub_dir = os.path.join("lib", "java")

    copy_legal_bits(
            os.path.join(root, top),
            os.path.join(root, top, sub_dir))

    shutil.copy(
            os.path.join(root, top, "README"),
            os.path.join(root, top, sub_dir, "README.Thrift"))

    archive = tarfile.open(
            os.path.join(OUTPUT, "%s.orig.tar.gz" % package_name),
            "w:gz")
    archive.add(
            os.path.join(root, top, sub_dir),
            arcname=package_name,
            exclude=exclude)
    archive.close()

    LOG.info("Created Java archive %s.orig.tar.gz", package_name)

get_toplevel = lambda p: p.split(os.sep)[0]

if __name__ == '__main__':
    name = sys.argv[3]
    version = sys.argv[2]
    root = tempfile.mkdtemp()

    LOG.info("Using working directory %s", root)

    tar = tarfile.open(name)
    manifest = tar.getnames()

    target = get_toplevel(manifest[0])
    LOG.info("Extracting %s to %s", name, target)

    tar.extractall(root)

    repack_java(root, target, version)

    LOG.info("Removing working directory")
    shutil.rmtree(root)
