public List <string> Distill(string FullPathAndWildcard, bool bRecursive = false, bool bAllowMissing = false, bool MoveSymbols = true, params string[] Exclusions) { var FilesToCopy = new List <string>(); string AbsFile = CommandUtils.CombinePaths(FullPathAndWildcard); CommandUtils.Log("Distilling {0}", AbsFile); string PathOnly = Path.GetDirectoryName(AbsFile); if (!CommandUtils.DirectoryExists_NoExceptions(PathOnly)) { if (bAllowMissing) { return(FilesToCopy); } throw new AutomationException("Path {0} was used to distill {1} but it doesn't exist.", PathOnly, AbsFile); } var Files = CommandUtils.FindFiles(Path.GetFileName(AbsFile), bRecursive, PathOnly); var Exclude = new List <string>(); foreach (var Excl in Exclusions) { if (!Excl.Contains("/") && !Excl.Contains("\\")) { var ExFiles = CommandUtils.FindFiles(Excl, bRecursive, PathOnly); Exclude.AddRange(ExFiles); } } foreach (var FileToCopy in Files) { bool bOk = !Exclude.Contains(FileToCopy) && !RejectFile(FileToCopy, PathOnly); foreach (var Excl in Exclusions) { if (Excl.Contains("/") || Excl.Contains("\\")) { if (Excl.Contains("*") || Excl.Contains("?")) { throw new AutomationException("Exclusion {0} is illegal, must either be a substring or a wildcard without a path", Excl); } bOk = bOk && !RejectFileOnSubstring(FileToCopy, Excl, PathOnly); } } if (bOk) { FilesToCopy.Add(CopyFileToDest(FileToCopy, MoveSymbols)); } } if (FilesToCopy.Count < 1 && !bAllowMissing) { throw new AutomationException("Distill {0} did not produce any files. Recursive option was {1}.", AbsFile, bRecursive.ToString()); } return(FilesToCopy); }
public Task ReactionRoles(Excl _, params string[] input) => InternalReactionRoles(true, input);