Exemple #1
0
        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);