private static Task AddFilesToPackage(Package package, string path, string dataRootPath, string outputPath, List <string> ignoredFiles, CancellationToken token)
        {
            Task task = null;

            task = Task.Run(() =>
            {
                if (!path.EndsWith(Path.DirectorySeparatorChar.ToString()))
                {
                    path += Path.DirectorySeparatorChar;
                }

                AppController.Main.UpdateProgressLog("Enumerating files...");

                var files = Directory.EnumerateFiles(path, DirectoryEnumerationOptions.Recursive | DirectoryEnumerationOptions.LargeCache, new DirectoryEnumerationFilters()
                {
                    InclusionFilter = (f) =>
                    {
                        return(!ignoredFiles.Any(x => IgnoreFile(f.FullPath, x)));
                    }
                }).ToDictionary(k => k.Replace(dataRootPath, String.Empty), v => v);

                foreach (KeyValuePair <string, string> file in files)
                {
                    if (token.IsCancellationRequested)
                    {
                        throw new TaskCanceledException(task);
                    }

                    FilesystemFileInfo fileInfo = FilesystemFileInfo.CreateFromEntry(file.Value, file.Key);
                    package.Files.Add(fileInfo);
                }
            }, token);

            return(task);
        }
Beispiel #2
0
        private static void AddFilesToPackage(Package package, string path, string dataRootPath, string outputPath, List <string> ignoredFiles)
        {
            if (!path.EndsWith(Path.DirectorySeparatorChar.ToString()))
            {
                path += Path.DirectorySeparatorChar;
            }

            var files = Directory.EnumerateFiles(path, DirectoryEnumerationOptions.Recursive | DirectoryEnumerationOptions.LargeCache, new DirectoryEnumerationFilters()
            {
                InclusionFilter = (f) =>
                {
                    return(!ignoredFiles.Any(x => IgnoreFile(f.FullPath, x)));
                }
            }).ToDictionary(k => k.Replace(dataRootPath, String.Empty), v => v);

            foreach (KeyValuePair <string, string> file in files)
            {
                DivinityApp.Log("Creating FilesystemFileInfo ");
                FilesystemFileInfo fileInfo = FilesystemFileInfo.CreateFromEntry(file.Value, file.Key);
                package.Files.Add(fileInfo);
            }
        }