sconsrecursiveglob.py 795 B

1234567891011121314151617181920212223242526272829
  1. import SCons
  2. from fbt.util import GLOB_FILE_EXCLUSION
  3. from SCons.Script import Flatten
  4. def GlobRecursive(env, pattern, node=".", exclude=[]):
  5. exclude = list(set(Flatten(exclude) + GLOB_FILE_EXCLUSION))
  6. # print(f"Starting glob for {pattern} from {node} (exclude: {exclude})")
  7. results = []
  8. if isinstance(node, str):
  9. node = env.Dir(node)
  10. for f in node.glob("*", source=True, exclude=exclude):
  11. if isinstance(f, SCons.Node.FS.Dir):
  12. results += env.GlobRecursive(pattern, f, exclude)
  13. results += node.glob(
  14. pattern,
  15. source=True,
  16. exclude=exclude,
  17. )
  18. # print(f"Glob result for {pattern} from {node}: {results}")
  19. return results
  20. def generate(env):
  21. env.AddMethod(GlobRecursive)
  22. def exists(env):
  23. return True