private async Task GetDependencyTreeInternal(IReadOnlyCollection<Dependency> dependencies, bool noCheckout,
bool useFullName, List<string> list,
List<string> list2, List<Package> packages) {
StatusRepo.Reset(RepoStatus.Resolving, dependencies.Count);
var specificVersions = dependencies.Select(x => ResolvePackageName(x.GetFullName())).ToArray();
await FetchAllRequestedPackages(specificVersions).ConfigureAwait(false);
var done = specificVersions.ToList();
foreach (var dep in specificVersions) {
Repo.AddPackage(dep.GetFullName());
await
ResolveDependencies(list, list2, packages, dep, done, useFullName, noCheckout)
.ConfigureAwait(false);
}
foreach (var package in packages)
package.StatusRepo = StatusRepo;
if (packages.GroupBy(x => x.MetaData.Name.ToLower()).Any(x => x.Count() > 1))
throw new InvalidOperationException("Somehow got duplicate packges: " +
string.Join(", ",
packages.GroupBy(x => x.MetaData.Name.ToLower())
.Where(x => x.Count() > 1)
.Select(x => x.Key)));
}