import SCons

try:
    from SCons.Environment import installFunc
except ImportError:
    from SCons.Tool.install import installFunc

def no_output(target, source, env):
    return ""

def generate(env):

    def QInstall(dir, source):
        dnodes = env.arg2nodes(dir, env.fs.Dir)
        sources = env.arg2nodes(source, env.fs.File)
        tgt = []
        for dnode in dnodes:
            for src in sources:
                target = env.fs.File(src.name, dnode)
                tgt.extend(env.QuietInstaller(target, src))
        return tgt
    env.QInstall = QInstall
    
    def QInstallAs(target, source):
        result = []
        sources = env.arg2nodes(source, env.fs.File)
        targets = env.arg2nodes(target, env.fs.File)
        for src, tgt in map(lambda x, y: (x, y), sources, targets):
            result.extend(env.QuietInstaller(tgt, src))

    env.QInstallAs = QInstallAs
    
    quietinstaller_builder = env.Builder(
        action = env.Action(installFunc, no_output),
        multi=1
    )

    env.Append(BUILDERS = {
        'QuietInstaller': quietinstaller_builder
    })

def exists(env):
   return True
