File: ListPackage\ListReportPackage.cs
Web Access
Project: src\src\nuget-client\src\NuGet.Core\NuGet.CommandLine.XPlat\NuGet.CommandLine.XPlat.csproj (NuGet.CommandLine.XPlat)
// 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.

#nullable disable

using System.Collections.Generic;
using NuGet.Protocol;

namespace NuGet.CommandLine.XPlat.ListPackage
{
    internal class ListReportPackage
    {
        internal string PackageId { get; private set; }
        internal string ResolvedVersion { get; private set; }
        internal string LatestVersion { get; private set; }
        public List<PackageVulnerabilityMetadata> Vulnerabilities { get; private set; }
        internal PackageDeprecationMetadata DeprecationReasons { get; private set; }
        internal AlternatePackageMetadata AlternativePackage { get; private set; }
        internal string RequestedVersion { get; private set; } // not needed for transitive package
        internal bool AutoReference { get; private set; } // not needed for transitive package

        public ListReportPackage(string packageId, string resolvedVersion, string latestVersion, List<PackageVulnerabilityMetadata> vulnerabilities, PackageDeprecationMetadata deprecationReasons, AlternatePackageMetadata alternativePackage, string requestedVersion, bool autoReference)
        {
            PackageId = packageId;
            ResolvedVersion = resolvedVersion;
            LatestVersion = latestVersion;
            Vulnerabilities = vulnerabilities;
            DeprecationReasons = deprecationReasons;
            AlternativePackage = alternativePackage;
            RequestedVersion = requestedVersion;
            AutoReference = autoReference;
        }

        public ListReportPackage(string packageId, string requestedVersion, string resolvedVersion, string latestVersion)
            : this(
                  packageId: packageId,
                  resolvedVersion: resolvedVersion,
                  latestVersion: latestVersion,
                  vulnerabilities: null,
                  deprecationReasons: null,
                  alternativePackage: null,
                  requestedVersion: requestedVersion,
                  autoReference: false)
        { }

        public ListReportPackage(string packageId, string requestedVersion, string resolvedVersion)
            : this(
                  packageId: packageId,
                  requestedVersion: requestedVersion,
                  resolvedVersion: resolvedVersion,
                  autoReference: false)
        { }

        public ListReportPackage(string packageId, string requestedVersion, string resolvedVersion, bool autoReference)
            : this(
                  packageId: packageId,
                  requestedVersion: requestedVersion,
                  resolvedVersion: resolvedVersion,
                  latestVersion: null,
                  autoReference: autoReference)
        { }

        public ListReportPackage(string packageId, string requestedVersion, string resolvedVersion, string latestVersion, bool autoReference)
            : this(
                  packageId: packageId,
                  resolvedVersion: resolvedVersion,
                  latestVersion: latestVersion,
                  vulnerabilities: null,
                  deprecationReasons: null,
                  alternativePackage: null,
                  requestedVersion: requestedVersion,
                  autoReference: autoReference)
        { }

        public ListReportPackage(string packageId, string requestedVersion, string resolvedVersion, PackageDeprecationMetadata deprecationReasons, AlternatePackageMetadata alternativePackage)
            : this(
                  packageId: packageId,
                  resolvedVersion: resolvedVersion,
                  latestVersion: null,
                  vulnerabilities: null,
                  deprecationReasons: deprecationReasons,
                  alternativePackage: alternativePackage,
                  requestedVersion: requestedVersion,
                  autoReference: false)
        { }

        public ListReportPackage(string packageId, string requestedVersion, string resolvedVersion, string latestVersion, List<PackageVulnerabilityMetadata> vulnerabilities)
            : this(
                  packageId: packageId,
                  resolvedVersion: resolvedVersion,
                  latestVersion: latestVersion,
                  vulnerabilities: vulnerabilities,
                  deprecationReasons: null,
                  alternativePackage: null,
                  requestedVersion: requestedVersion,
                  autoReference: false)
        { }

        public ListReportPackage(string packageId, string requestedVersion, string resolvedVersion, List<PackageVulnerabilityMetadata> vulnerabilities)
            : this(
                  packageId: packageId,
                  requestedVersion: requestedVersion,
                  resolvedVersion: resolvedVersion,
                  latestVersion: null,
                  vulnerabilities: vulnerabilities.Count == 0 ? null : vulnerabilities)
        { }
    }
}