globRecursive static method

List<File> globRecursive(
  1. Directory node,
  2. String pattern,
  3. List<String> exclude, {
  4. Directory? root,
})

Implementation

static List<File> globRecursive(
  Directory node,
  String pattern,
  List<String> exclude, {
  Directory? root,
}) {
  final base = root ?? node;
  final excluded = <String>{...exclude, ...fileExclusion};
  final results = <File>[];

  if (!hasGlobMagic(pattern)) {
    results.add(File(_join(node.path, pattern)));
    return results;
  }

  if (!node.existsSync()) return results;

  for (final dir in _entries(node).whereType<Directory>()) {
    if (_isExcluded(dir.path, base, excluded)) continue;
    results.addAll(globRecursive(dir, pattern, exclude, root: base));
  }

  results.addAll(_glob(node, pattern, base, excluded));
  return results;
}