private static Component SetupComponentProperties(Component component, NuspecModel nuspecModel) { component.Publisher = nuspecModel.nuspecReader.GetAuthors(); component.Copyright = nuspecModel.nuspecReader.GetCopyright(); // this prevents empty copyright values in the JSON BOM if (string.IsNullOrEmpty(component.Copyright)) { component.Copyright = null; } var title = nuspecModel.nuspecReader.GetTitle(); var summary = nuspecModel.nuspecReader.GetSummary(); var description = nuspecModel.nuspecReader.GetDescription(); if (!string.IsNullOrEmpty(summary)) { component.Description = summary; } else if (!string.IsNullOrEmpty(description)) { component.Description = description; } else if (!string.IsNullOrEmpty(title)) { component.Description = title; } return(component); }
private async Task <NuspecModel> GetNuspec(string name, string version, string nuspecFilename, FindPackageByIdResource resource) { var nuspecModel = new NuspecModel(); if (nuspecFilename == null) { var packageVersion = new NuGetVersion(version); await using MemoryStream packageStream = new MemoryStream(); await resource.CopyNupkgToStreamAsync(name, packageVersion, packageStream, _sourceCacheContext, _logger, _cancellationToken); using PackageArchiveReader packageReader = new PackageArchiveReader(packageStream); nuspecModel.nuspecReader = await packageReader.GetNuspecReaderAsync(_cancellationToken); if (!_disableHashComputation) { nuspecModel.hashBytes = ComputeSha215Hash(packageStream); } } else { await using (var xmlStream = _fileSystem.File.OpenRead(nuspecFilename)) { nuspecModel.nuspecReader = new NuspecReader(xmlStream); } // reference: https://docs.microsoft.com/en-us/nuget/reference/cli-reference/cli-ref-add // and: https://github.com/NuGet/Home/wiki/Nupkg-Metadata-File // └─<packageID> // └─<version> // ├─<packageID>.<version>.nupkg // ├─<packageID>.<version>.nupkg.sha512 // └─<packageID>.nuspec string shaFilename = Path.ChangeExtension(nuspecFilename, version + _sha512Extension); string nupkgFilename = Path.ChangeExtension(nuspecFilename, version + _nupkgExtension); if (_fileSystem.File.Exists(shaFilename)) { string base64Hash = _fileSystem.File.ReadAllText(shaFilename); nuspecModel.hashBytes = Convert.FromBase64String(base64Hash); } else if (!_disableHashComputation && _fileSystem.File.Exists(nupkgFilename)) { await using (var nupkgStream = _fileSystem.File.OpenRead(nupkgFilename)) { nuspecModel.hashBytes = ComputeSha215Hash(nupkgStream); } } } return(nuspecModel); }