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)
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)