14 readonly SearchClient _everything =
new();
16 public int Priority => 0;
18 private Result Glob(AbsolutePath root,
string pattern)
20 var absolutePattern = (root / pattern).ToString();
25 var processedPattern = absolutePattern.Contains(
"**/") || absolutePattern.Contains(
"**\\")
26 ? absolutePattern +
"|" + absolutePattern.Replace(
"**/",
"").Replace(
"**\\",
"")
29 return _everything.Search(
31 SearchClient.SearchFlags.MatchPath | SearchClient.SearchFlags.MatchWholeWord,
32 SearchClient.BehaviorWhenBusy.WaitOrContinue
36 public IEnumerable<AbsolutePath> GlobFiles(AbsolutePath root,
string pattern)
37 => Glob(root, pattern).Items
38 .Where(i => i.Flags == Result.ItemFlags.None)
39 .Select(i => ((AbsolutePath) i.Path) / i.Name);
41 public IEnumerable<AbsolutePath> GlobDirectories(AbsolutePath root,
string pattern)
42 => Glob(root, pattern).Items
43 .Where(i => i.Flags == Result.ItemFlags.Folder)
44 .Select(i => ((AbsolutePath) i.Path) / i.Name);