mirror of
https://github.com/open-source-parsers/jsoncpp.git
synced 2024-12-26 18:51:04 +08:00
54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
import fnmatch
|
|
import os
|
|
|
|
def generate(env):
|
|
def Glob(env, includes = None, excludes = None, dir = '.'):
|
|
"""Adds Glob(includes = Split('*'), excludes = None, dir = '.')
|
|
helper function to environment.
|
|
|
|
Glob both the file-system files.
|
|
|
|
includes: list of file name pattern included in the return list when matched.
|
|
excludes: list of file name pattern exluced from the return list.
|
|
|
|
Example:
|
|
sources = env.Glob(("*.cpp", '*.h'), "~*.cpp", "#src")
|
|
"""
|
|
def filterFilename(path):
|
|
abs_path = os.path.join(dir, path)
|
|
if not os.path.isfile(abs_path):
|
|
return 0
|
|
fn = os.path.basename(path)
|
|
match = 0
|
|
for include in includes:
|
|
if fnmatch.fnmatchcase(fn, include):
|
|
match = 1
|
|
break
|
|
if match == 1 and not excludes is None:
|
|
for exclude in excludes:
|
|
if fnmatch.fnmatchcase(fn, exclude):
|
|
match = 0
|
|
break
|
|
return match
|
|
if includes is None:
|
|
includes = ('*',)
|
|
elif type(includes) in (type(''), type(u'')):
|
|
includes = (includes,)
|
|
if type(excludes) in (type(''), type(u'')):
|
|
excludes = (excludes,)
|
|
dir = env.Dir(dir).abspath
|
|
paths = os.listdir(dir)
|
|
def makeAbsFileNode(path):
|
|
return env.File(os.path.join(dir, path))
|
|
nodes = filter(filterFilename, paths)
|
|
return map(makeAbsFileNode, nodes)
|
|
|
|
from SCons.Script import Environment
|
|
Environment.Glob = Glob
|
|
|
|
def exists(env):
|
|
"""
|
|
Tool always exists.
|
|
"""
|
|
return True
|