#!/usr/bin/python

import sys, re, shutil, os, hashlib
import imp
import getpass

if __name__ == '__main__':

    d = os.path.abspath(os.path.join(os.path.dirname(os.path.realpath(__file__)), os.pardir))
    os.chdir(d)
    v = imp.load_source('version', 'lib/version.py')
    version = v.ELECTRUM_VERSION
    print "version", version

    # copy dependencies into 'packages' directory
    deps = [
        'aes',
        'ecdsa',
        'pbkdf2',
        'requests', # note: requests-2.5.1 is needed to build with pyinstaller
        'qrcode',
        'google/protobuf',
        'tlslite',
        'dns',
        'six',
    ]
    # don't use /usr/lib
    sys.path = ['/usr/local/lib/python2.7/dist-packages']
    for module in deps:
        f, pathname, descr = imp.find_module(module)
        target = 'packages/' + module + descr[0]
        if os.path.exists(target):
            continue
        d = os.path.dirname(target)
        if d and not (os.path.exists(d)):
            os.makedirs(d)
        if descr[0]:
            shutil.copy(pathname, target)
        else:
            shutil.copytree(pathname, target, ignore=shutil.ignore_patterns('*.pyc'))

    # fix google/__init__.py needed by pyinstaller
    n = 'packages/google/__init__.py'
    if not os.path.exists(n):
        os.system("echo \# do not remove>%s"%n)

    # os.system("python mki18n.py")
    os.system("pyrcc4 icons.qrc -o gui/qt/icons_rc.py")
    os.system("python setup.py sdist --format=zip,gztar")
    
    _tgz="Electrum-%s.tar.gz"%version
    _zip="Electrum-%s.zip"%version

    os.chdir("dist")
    password = getpass.getpass("Password:")
    for f in [_tgz,_zip]:
        os.system( "gpg --sign --armor --detach --passphrase \"%s\" %s"%(password, f) )

    md5_tgz = hashlib.md5(file(_tgz, 'r').read()).digest().encode('hex')
    md5_zip = hashlib.md5(file(_zip, 'r').read()).digest().encode('hex')
    os.chdir("..")

    print ""
    print "Packages are ready:"
    print "dist/%s     "%_tgz, md5_tgz
    print "dist/%s        "%_zip, md5_zip
    print "To make a release, upload the files to the server, and update the webpages in branch gh-pages"

