public async Task <string?> DownloadPackageAsync(PackageIdentity identity, CancellationToken cancellationToken) { var repository = Repository.Factory.GetCoreV3(Source.ToPackageSource()); var resource = await repository.GetResourceAsync <FindPackageByIdResource>(cancellationToken); var version = identity.Version.ToNugetVersion(); var tempFilePath = _fileService.GetNupkgTempFilePath(identity); using (var stream = _fileService.CreateWriteFileStream(tempFilePath)) { var result = await resource.CopyNupkgToStreamAsync(identity.Id, version, stream, _cacheContext, _logger, cancellationToken); if (!result) { LogHelper.LogWarning($"Package {identity.Id} not downloaded"); return(null); } } var packageDirectoryPath = _fileService.Unzip(tempFilePath, _configService.LocalRepositoryPath); if (!_fileService.RemoveFile(tempFilePath)) { LogHelper.LogWarning($"Cannot remove temp file '{tempFilePath}'"); } return(packageDirectoryPath); }
public async Task <PackageInfo?> GetPackageAsync(PackageIdentity identity, CancellationToken cancellationToken) { var repository = Repository.Factory.GetCoreV3(Source.ToPackageSource()); var resource = await repository.GetResourceAsync <PackageMetadataResource>(cancellationToken); var packages = await resource.GetMetadataAsync(identity.Id, true, false, _cacheContext, _logger, cancellationToken); return(packages.Select(p => p.ToPackageInfo()).FirstOrDefault(p => p.Identity.Version.Equals(identity.Version))); }
public async Task <IEnumerable <FrameworkGroup> > FindDependenciesAsync(PackageIdentity packageIdentity, CancellationToken cancellationToken) { var repositories = new[] { Repository.Factory.GetCoreV3(Source.ToPackageSource()) }; var currentFramework = _frameworkService.RequireCurrentFramework(); var dependencies = new HashSet <SourcePackageDependencyInfo>(PackageIdentityComparer.Default); await FindPackageDependenciesRecursive( packageIdentity.ToNugetPackageIdentity(), currentFramework.ToNugetFramework(), _cacheContext, repositories, dependencies, cancellationToken); return(new [] { new FrameworkGroup(currentFramework, dependencies.Select(d => d.ToPackageIdentity())) }); }