#!/usr/bin/env python
"""
    Is package installed? check.

    Copyright  Afrihost.com (PTY) Ltd 2004
    Original file by: Ed Pascoe <ed@pascoe.co.za>
"""
__author__  = "Ed Pascoe <ed@pascoe.co.za>"
__credits__ = "Afrihost.com -- The best webhosting. Ever."


import os.path, sys

def pypkgcheck(package,tar,dname="",instcmd="python2 setup.py build && python2 setup.py install"):
    """ Make sure that the python package is installed, if it is not then untar tar file
        in tar, cd into dname and then execute the contents of instcmd
         
        Untars in tmp, so be wary of issues with noexec applied to /tmp
    """

    if not dname: 
        dname=tar
        dname=dname[:dname.find(".tar")]
        #try: dname=dname[:dname.find(".tar")]
        #except ImportError: 
        #    raise
        #    pass

    try:
        __import__(package, globals(), locals(), [])
        return
    except LookupError:
        #Assume this is a bug from xml.xpath, ignore:
        return
    except ImportError: pass

    print "Module %s not installed" % (package)

    instscript="""cd /tmp
tar -xzvf '%s'
cd '%s'
%s
cd ..
rm -rf '%s'
""" % (
        os.path.join( os.path.realpath(os.path.dirname(sys.argv[0])),"python_packages" ,tar),
        dname,
        instcmd,
        dname
      )
    print "Executing",instscript
    os.system(instscript)

if __name__=='__main__': sys.path.append(os.path.dirname(os.path.realpath(sys.argv[0]))+'/../pylib')

pypkgcheck('csv','csv-1.0.tar.gz')
pypkgcheck('DNS','pydns-2.3.6.tar.gz')
pypkgcheck('proctitle','proctitle-0.0.1.tar.gz')
pypkgcheck('MySQLdb','MySQL-python-1.2.1_p2.tar.gz')
#pypkgcheck('Cheetah','Cheetah-1.0.tar.gz')
#pypkgcheck('optik','Optik-1.4.1.tar.gz') #Obsoltete
#pypkgcheck('xml.xpath','PyXML-0.8.2.tar.gz') #Broken
