Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }