Exemplo n.º 1
0
        public Task GenerateStubDataInternal(DirectoryInfo baseDir, DirectoryInfo localDir)
        {
            return(Task.Run(() =>
            {
                var basefiles = baseDir.GetFiles();
                var localfiles = localDir.GetFiles();

                foreach (var lf in localfiles)
                {
                    var stub = StubItem.FromFile(lf);
                    // exclude
                    if (basefiles.All(i => i.Name != lf.Name))
                    {
                        stub.IsIgnored = true;
                    }
                    // have
                    StubObj.AddStubItem(stub);
                }

                var baseDirectories = baseDir.GetDirectories();
                var localDirectories = localDir.GetDirectories();
                var tasks = new List <Task>();
                foreach (var cd in localDirectories)
                {
                    var stub = StubItem.FromDirectory(cd);
                    var rd = baseDirectories.FirstOrDefault(i => i.Name == cd.Name);
                    if (rd == null)
                    {
                        stub.IsIgnored = true;
                        continue;
                    }

                    StubObj.AddStubItem(stub);

                    var task = GenerateStubDataInternal(rd, cd);
                    tasks.Add(task);
                }
                Task.WaitAll(tasks.ToArray());
            }));
        }