withSIX.Sync.Core.Packages.PackageManager.GetDependencyTreeInternal C# (CSharp) Method

GetDependencyTreeInternal() private method

private GetDependencyTreeInternal ( IReadOnlyCollection dependencies, bool noCheckout, bool useFullName, List list, List list2, List packages ) : Task
dependencies IReadOnlyCollection
noCheckout bool
useFullName bool
list List
list2 List
packages List
return Task
        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)));
        }