| File: src\UsageReport\UsageData.cs | Web Access |
| Project: src\arcade\src\Microsoft.DotNet.SourceBuild\tasks\Microsoft.DotNet.SourceBuild.Tasks.csproj (Microsoft.DotNet.SourceBuild.Tasks) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using NuGet.Packaging.Core; using System.Linq; using System.Xml.Linq; namespace Microsoft.DotNet.SourceBuild.Tasks.UsageReport { public class UsageData { public string CreatedByRid { get; set; } public string[] ProjectDirectories { get; set; } public PackageIdentity[] NeverRestoredTarballPrebuilts { get; set; } public UsagePattern[] IgnorePatterns { get; set; } public Usage[] Usages { get; set; } public XElement ToXml() => new XElement( nameof(UsageData), CreatedByRid == null ? null : new XElement( nameof(CreatedByRid), CreatedByRid), ProjectDirectories?.Any() != true ? null : new XElement( nameof(ProjectDirectories), ProjectDirectories .Select(dir => new XElement("Dir", dir))), NeverRestoredTarballPrebuilts?.Any() != true ? null : new XElement( nameof(NeverRestoredTarballPrebuilts), NeverRestoredTarballPrebuilts .OrderBy(id => id) .Select(id => id.ToXElement())), IgnorePatterns?.Any() != true ? null : new XElement( nameof(IgnorePatterns), IgnorePatterns .Select(p => p.ToXml())), Usages?.Any() != true ? null : new XElement( nameof(Usages), Usages .OrderBy(u => u.PackageIdentity) .ThenByOrdinal(u => u.AssetsFile) .Select(u => u.ToXml()))); public static UsageData Parse(XElement xml) => new UsageData { CreatedByRid = xml.Element(nameof(CreatedByRid)) ?.Value, ProjectDirectories = (xml.Element(nameof(ProjectDirectories))?.Elements()).NullAsEmpty() .Select(x => x.Value) .ToArray(), NeverRestoredTarballPrebuilts = (xml.Element(nameof(NeverRestoredTarballPrebuilts))?.Elements()).NullAsEmpty() .Select(XmlParsingHelpers.ParsePackageIdentity) .ToArray(), IgnorePatterns = (xml.Element(nameof(IgnorePatterns))?.Elements()).NullAsEmpty() .Select(UsagePattern.Parse) .ToArray(), Usages = (xml.Element(nameof(Usages))?.Elements()).NullAsEmpty() .Select(Usage.Parse) .ToArray() }; } }