private async Task InstallPackages(List <GraphItem> installItems, string packagesDirectory, Func <Library, string, bool> packageFilter) { using (var sha512 = SHA512.Create()) { foreach (var item in installItems) { var library = item.Match.Library; var memStream = new MemoryStream(); await item.Match.Provider.CopyToAsync(item.Match, memStream); memStream.Seek(0, SeekOrigin.Begin); var nupkgSHA = Convert.ToBase64String(sha512.ComputeHash(memStream)); bool shouldInstall = packageFilter(library, nupkgSHA); if (!shouldInstall) { continue; } Reports.Information.WriteLine("Installing {0} {1}", library.Name.Bold(), library.Version); memStream.Seek(0, SeekOrigin.Begin); await NuGetPackageUtils.InstallFromStream(memStream, library, packagesDirectory, sha512); } } }
private async Task InstallPackageCore(GraphItem installItem, string packagesDirectory) { using (var memoryStream = new MemoryStream()) { var match = installItem.Match; await match.Provider.CopyToAsync(installItem.Match, memoryStream); memoryStream.Seek(0, SeekOrigin.Begin); await NuGetPackageUtils.InstallFromStream(memoryStream, match.Library, packagesDirectory, Reports.Information); Interlocked.Increment(ref _installCount); } }