예제 #1
0
파일: gopkg.py 프로젝트: alberts/goscons
def gopackages(env, topdir, basedir=None, *args, **kw):
    if not basedir:
        basedir = topdir
    fs = SCons.Node.FS.get_default_fs()
    pkgdirs = []
    for root, dirs, files in os.walk(topdir, True):
        alldirs = set(dirs)
        skipdirs = set()
        for d in dirs:
            if d == "_obj":
                skipdirs.add(d)
            elif d == "_test":
                skipdirs.add(d)
            elif d.lower() == "testdata":
                skipdirs.add(d)
        dirs[:] = list(alldirs - skipdirs)
        root = fs.Dir(root)
        ispkg = False
        for f in files:
            if not f.endswith(env["GOFILESUFFIX"]):
                continue
            if root.name == goutils.package_name(root.File(f), env):
                ispkg = True
                break
        if ispkg:
            pkgdirs.append(root.abspath)
    return map(lambda x: env.GoPackage(x, basedir, *args, **kw), pkgdirs)
예제 #2
0
파일: gocmd.py 프로젝트: alberts/goscons
def gocommands(env, srcdir, *args, **kw):
    fs = SCons.Node.FS.get_default_fs()
    cmddirs = []
    for root, dirs, files in os.walk(srcdir):
        root = fs.Dir(root)
        iscmd = False
        for f in files:
            if not f.endswith('.go'): continue
            if goutils.package_name(root.File(f), env)=='main':
                iscmd = True
                break
        if iscmd: cmddirs.append(root.abspath)
    return map(lambda x: env.GoCommand(x, *args, **kw), cmddirs)