import os
import fnmatch
#from SCons.Script import *

def generate(env):
    def InstallTree(dest_dir, src_dir, includes, excludes):
        destnode = env.Dir(dest_dir)
        dirs = []
        dirs.append(src_dir)
        while len(dirs) > 0:
            currdir = dirs.pop(0)
            currdestdir = dest_dir + currdir[len(src_dir):]
            if not os.path.exists(currdir): return
            flist = os.listdir(currdir)
            for currfile in flist:
                currpath = os.path.join(currdir, currfile)
                match = 0
                for pattern in includes:
                    if fnmatch.fnmatchcase(currfile, pattern):
                        match = 1
                if (match == 1):
                    for pattern in excludes:
                        if fnmatch.fnmatchcase(currfile, pattern):
                            match = 0
                    if (match == 1):
                        if (os.path.isdir(currpath)):
                            #print "d=" + currpath
                            dirs.append(currpath)
                        else:
                            #print "f=" + currpath
                            env.Install(currdestdir, currpath)
        return destnode

    env.InstallTree = InstallTree
def exists(env):
    return true
