private async Task <IEnumerable <string> > GetUpdatablePackageUrlsAsync(bool includePreview) { IEnumerable <string> packageUrls = new List <string>(); DirectoryPath? tempPath = null; try { var manifestPackageUrls = _workloadManifestUpdater.GetManifestPackageUrls(includePreview); packageUrls = packageUrls.Concat(manifestPackageUrls); tempPath = new DirectoryPath(Path.Combine(TempDirectoryPath, "dotnet-manifest-extraction")); await UseTempManifestsToResolvePacksAsync(tempPath.Value, includePreview); if (_workloadInstaller.GetInstallationUnit().Equals(InstallationUnit.Packs)) { var installer = _workloadInstaller.GetPackInstaller(); var packsToUpdate = GetUpdatablePacks(installer) .Select(packInfo => PackageDownloader.GetPackageUrl(new PackageId(packInfo.ResolvedPackageId), new NuGetVersion(packInfo.Version), _packageSourceLocation).GetAwaiter().GetResult()); packageUrls = packageUrls.Concat(packsToUpdate); return(packageUrls); } else { throw new NotImplementedException(); } } finally { if (tempPath != null && tempPath.HasValue && Directory.Exists(tempPath.Value.Value)) { Directory.Delete(tempPath.Value.Value, true); } } }
private async Task <IEnumerable <string> > GetPackageDownloadUrlsAsync(IEnumerable <WorkloadId> workloadIds, bool skipManifestUpdate, bool includePreview) { var packageUrls = new List <string>(); DirectoryPath?tempPath = null; try { if (!skipManifestUpdate) { var manifestPackageUrls = _workloadManifestUpdater.GetManifestPackageUrls(includePreview); packageUrls.AddRange(manifestPackageUrls); tempPath = new DirectoryPath(Path.Combine(TempDirectoryPath, "dotnet-manifest-extraction")); await UseTempManifestsToResolvePacksAsync(tempPath.Value, includePreview); var installedWorkloads = _workloadInstaller.GetWorkloadInstallationRecordRepository().GetInstalledWorkloads(new SdkFeatureBand(_sdkVersion)); workloadIds = workloadIds.Concat(installedWorkloads).Distinct(); } if (_workloadInstaller.GetInstallationUnit().Equals(InstallationUnit.Packs)) { var installer = _workloadInstaller.GetPackInstaller(); var packUrls = GetPacksToInstall(workloadIds) .Select(pack => PackageDownloader.GetPackageUrl(new PackageId(pack.ResolvedPackageId), new NuGetVersion(pack.Version), packageSourceLocation: _packageSourceLocation, includePreview: includePreview).GetAwaiter().GetResult()); packageUrls.AddRange(packUrls); } else { throw new NotImplementedException(); } return(packageUrls); } finally { if (tempPath != null && tempPath.HasValue && Directory.Exists(tempPath.Value.Value)) { Directory.Delete(tempPath.Value.Value, true); } } }