private void TakeDepsToProcessFromQueue(DepsQueue queue, IList <DepWithParent> depsPool, IList <DepWithParent> backToQueue, ModulesContainer processed) { while (!queue.IsEmpty()) { var curDep = queue.Pop(); if (curDep.Dep.Treeish == null) { curDep.Dep.Treeish = processed.GetTreeishByName(curDep.Dep.Name); } if (processed.IsProcessed(curDep.Dep)) { continue; } processed.ThrowOnTreeishConflict(curDep); if (depsPool.Select(d => d.Dep.Name).Contains(curDep.Dep.Name)) { backToQueue.Add(curDep); } else { depsPool.Add(curDep); } } }
private static void AddNewDeps(DepsQueue queue, ModulesContainer processed, List <DepWithParent> depsPool) { foreach (var dep in depsPool) { var currentModuleDeps = GetCurrentModuleDeps(dep.Dep); if (currentModuleDeps.Deps == null) { continue; } queue.AddRange(currentModuleDeps.Deps.Where(d => !processed.IsProcessed(d)) .Select(d => new DepWithParent(d, dep.Dep.Name)).ToList()); } }