| File: Rules\DefaultManifestValuesRule.cs | Web Access |
| Project: src\nuget-client\src\NuGet.Core\NuGet.Packaging\NuGet.Packaging.csproj (NuGet.Packaging) |
// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using NuGet.Common; namespace NuGet.Packaging.Rules { public class DefaultManifestValuesRule : IPackageRule { internal static readonly Uri SampleProjectUrl = new Uri("http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE"); internal static readonly Uri SampleLicenseUrl = new Uri("http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE"); internal static readonly Uri SampleIconUrl = new Uri("http://ICON_URL_HERE_OR_DELETE_THIS_LINE"); internal const string SampleTags = "Tag1 Tag2"; internal const string SampleReleaseNotes = "Summary of changes made in this release of the package."; internal const string SampleDescription = "Package description"; internal const string SampleManifestDependencyId = "SampleDependency"; internal const string SampleManifestDependencyVersion = "1.0"; public string MessageFormat { get; } public DefaultManifestValuesRule(string messageFormat) { MessageFormat = messageFormat; } public IEnumerable<PackagingLogMessage> Validate(PackageArchiveReader builder) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } var nuspecReader = builder.NuspecReader; Uri.TryCreate(nuspecReader.GetProjectUrl(), UriKind.RelativeOrAbsolute, out var projectUrl); if (projectUrl == SampleProjectUrl) { yield return CreateIssueFor("projectUrl", nuspecReader.GetProjectUrl()); } Uri.TryCreate(nuspecReader.GetLicenseUrl(), UriKind.RelativeOrAbsolute, out var licenseUrl); if (licenseUrl == SampleLicenseUrl) { yield return CreateIssueFor("licenseUrl", nuspecReader.GetLicenseUrl()!); } Uri.TryCreate(nuspecReader.GetIconUrl(), UriKind.RelativeOrAbsolute, out var iconUrl); if (iconUrl == SampleIconUrl) { yield return CreateIssueFor("iconUrl", nuspecReader.GetIconUrl()); } if (SampleTags.Equals(nuspecReader.GetTags(), StringComparison.Ordinal)) { yield return CreateIssueFor("tags", SampleTags); } if (SampleReleaseNotes.Equals(nuspecReader.GetReleaseNotes(), StringComparison.Ordinal)) { yield return CreateIssueFor("releaseNotes", SampleReleaseNotes); } if (SampleDescription.Equals(nuspecReader.GetDescription(), StringComparison.Ordinal)) { yield return CreateIssueFor("description", SampleDescription); } var dependency = nuspecReader.GetDependencyGroups().SelectMany(d => d.Packages).FirstOrDefault(); if (dependency != null && dependency.Id.Equals(SampleManifestDependencyId, StringComparison.OrdinalIgnoreCase) && dependency.VersionRange != null && dependency.VersionRange.ToString().Equals("[" + SampleManifestDependencyVersion + "]", StringComparison.OrdinalIgnoreCase)) { yield return CreateIssueFor("dependency", dependency.ToString()); } } private PackagingLogMessage CreateIssueFor(string field, string value) { return PackagingLogMessage.CreateWarning( string.Format(CultureInfo.CurrentCulture, MessageFormat, value, field), NuGetLogCode.NU5102); } } }