Skip to content

Commit b9aced0

Browse files
authored
Don't index packages from maintenance-packages repo (#584)
1 parent adfd390 commit b9aced0

File tree

5 files changed

+69
-26
lines changed

5 files changed

+69
-26
lines changed

PackageIndexer/CsvUtils.cs

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -256,19 +256,10 @@ string targetFramework
256256
{
257257
bool includeXml = true;
258258

259-
if (PlatformPackageDefinition.packagesWithoutDocs.Contains(packageEntry.Name))
259+
if (PlatformPackageDefinition.runtimePackagesWithoutDocs.Contains(packageEntry.Name) ||
260+
PlatformPackageDefinition.otherPackagesWithoutDocs.Contains(packageEntry.Name))
260261
includeXml = false;
261262

262-
// And don't include XML file for Microsoft.Extensions.Diagnostics.ResourceMonitoring
263-
// (see https://github.com/dotnet/dotnet-api-docs/pull/10395#discussion_r1758128787).
264-
if (string.Equals(
265-
packageEntry.Name,
266-
"Microsoft.Extensions.Diagnostics.ResourceMonitoring",
267-
StringComparison.InvariantCultureIgnoreCase))
268-
{
269-
includeXml = false;
270-
}
271-
272263
// And don't include XMl files for Microsoft.Bcl.* packages.
273264
if (packageEntry.Name.StartsWith("Microsoft.Bcl.", StringComparison.InvariantCultureIgnoreCase))
274265
includeXml = false;

PackageIndexer/DotnetPackageIndex.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ params string[] feedUrls
8686

8787
var connectionString = new KustoConnectionStringBuilder(cluster).WithAadUserPromptAuthentication();
8888
using var queryProvider = KustoClientFactory.CreateCslQueryProvider(connectionString);
89-
using var reader = queryProvider.ExecuteQuery(databaseName, query, null);
89+
using System.Data.IDataReader reader = queryProvider.ExecuteQuery(databaseName, query, null);
9090

9191
List<string> packageIds = [];
9292

PackageIndexer/PackageFilter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ public bool IsMatch(string packageId)
6464

6565
public sealed class PackageFilter(IEnumerable<PackageFilterExpression> includes, IEnumerable<PackageFilterExpression> excludes)
6666
{
67-
public ImmutableArray<PackageFilterExpression> Includes { get; } = includes.ToImmutableArray();
68-
public ImmutableArray<PackageFilterExpression> Excludes { get; } = excludes.ToImmutableArray();
67+
public ImmutableArray<PackageFilterExpression> Includes { get; } = [.. includes];
68+
public ImmutableArray<PackageFilterExpression> Excludes { get; } = [.. excludes];
6969

7070
public bool IsMatch(string packageId)
7171
{

PackageIndexer/PlatformPackageDefinition.cs

Lines changed: 57 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,25 @@ internal static class PlatformPackageDefinition
66
{
77
private static FrozenSet<string> s_packageIds;
88

9-
public static readonly List<string> packagesWithoutDocs =
9+
public static readonly List<string> otherPackagesWithoutDocs =
10+
[
11+
// See https://github.com/dotnet/dotnet-api-docs/pull/10395#discussion_r1758128787.
12+
"Microsoft.Extensions.Diagnostics.ResourceMonitoring",
13+
// From WinForms and doesn't use compiler-generated XML docs.
14+
"System.Drawing.Common",
15+
// WCF
16+
"System.ServiceModel.Federation"
17+
];
18+
19+
public static readonly List<string> runtimePackagesWithoutDocs =
1020
[
1121
"Microsoft.Extensions.DependencyModel",
1222
"Microsoft.Extensions.FileSystemGlobbing",
1323
"Microsoft.NETCore.Platforms",
1424
"Microsoft.Win32.Registry.AccessControl",
1525
"Microsoft.Win32.SystemEvents",
1626
"System.CodeDom",
27+
"System.Collections.Immutable",
1728
"System.ComponentModel.Composition",
1829
"System.ComponentModel.Composition.Registration",
1930
"System.Composition.AttributedModel",
@@ -24,21 +35,26 @@ internal static class PlatformPackageDefinition
2435
"System.Configuration.ConfigurationManager",
2536
"System.Data.Odbc",
2637
"System.Data.OleDb",
38+
"System.Diagnostics.DiagnosticSource",
2739
"System.Diagnostics.EventLog",
2840
"System.Diagnostics.PerformanceCounter",
29-
"System.DirectoryServices",
3041
"System.DirectoryServices.AccountManagement",
42+
"System.DirectoryServices",
3143
"System.DirectoryServices.Protocols",
3244
"System.IO.Hashing",
3345
"System.IO.Packaging",
46+
"System.IO.Pipelines",
3447
"System.IO.Ports",
3548
"System.Management",
3649
"System.Memory.Data",
50+
"System.Net.Http.Json",
3751
"System.Net.Http.WinHttpHandler",
3852
"System.Reflection.Context",
53+
"System.Reflection.Metadata",
3954
"System.Reflection.MetadataLoadContext",
4055
"System.Resources.Extensions",
4156
"System.Runtime.Caching",
57+
"System.Runtime.Serialization.Formatters",
4258
"System.Security.Cryptography.Cose",
4359
"System.Security.Cryptography.Pkcs",
4460
"System.Security.Cryptography.ProtectedData",
@@ -47,6 +63,12 @@ internal static class PlatformPackageDefinition
4763
"System.ServiceModel.Syndication",
4864
"System.ServiceProcess.ServiceController",
4965
"System.Speech",
66+
"System.Text.Encoding.CodePages",
67+
"System.Text.Encodings.Web",
68+
"System.Text.Json",
69+
"System.Threading.AccessControl",
70+
"System.Threading.Channels",
71+
"System.Threading.Tasks.Dataflow",
5072
"System.Windows.Extensions"
5173
];
5274

@@ -56,6 +78,12 @@ internal static class PlatformPackageDefinition
5678
"dotnetframework"
5779
], StringComparer.OrdinalIgnoreCase);
5880

81+
// Repository URLs to exclude
82+
public static readonly FrozenSet<string> ExcludedRepositories = FrozenSet.ToFrozenSet(
83+
[
84+
"https://github.com/dotnet/maintenance-packages"
85+
], StringComparer.OrdinalIgnoreCase);
86+
5987
public static PackageFilter Filter { get; } = new(
6088
includes:
6189
[
@@ -100,6 +128,26 @@ internal static class PlatformPackageDefinition
100128
PackageFilterExpression.Parse("System.Cloud.Messaging.Abstractions"),
101129
// Test APIs.
102130
PackageFilterExpression.Parse("Microsoft.Extensions.DependencyInjection.Specification.Tests"),
131+
// No longer built in runtime repo.
132+
PackageFilterExpression.Parse("System.Reflection.Emit"),
133+
PackageFilterExpression.Parse("System.ComponentModel.Annotations"),
134+
PackageFilterExpression.Parse("System.Data.DataSetExtensions"),
135+
PackageFilterExpression.Parse("System.Security.AccessControl"),
136+
PackageFilterExpression.Parse("System.Security.Cryptography.Cng"),
137+
PackageFilterExpression.Parse("System.Security.Principal.Windows"),
138+
// Maintenance packages.
139+
PackageFilterExpression.Parse("Microsoft.IO.Redist"),
140+
PackageFilterExpression.Parse("System.Buffers"),
141+
PackageFilterExpression.Parse("System.Data.SqlClient"),
142+
PackageFilterExpression.Parse("System.Json"),
143+
PackageFilterExpression.Parse("System.Memory"),
144+
PackageFilterExpression.Parse("System.Net.WebSockets.WebSocketProtocol"),
145+
PackageFilterExpression.Parse("System.Numerics.Vectors"),
146+
PackageFilterExpression.Parse("System.Reflection.DispatchProxy"),
147+
PackageFilterExpression.Parse("System.Runtime.CompilerServices.Unsafe"),
148+
PackageFilterExpression.Parse("System.Threading.Tasks.Extensions"),
149+
PackageFilterExpression.Parse("System.ValueTuple"),
150+
PackageFilterExpression.Parse("System.Xml.XPath.XmlDocument"),
103151
// Suffixes.
104152
PackageFilterExpression.Parse("*.cs"),
105153
PackageFilterExpression.Parse("*.de"),
@@ -117,13 +165,11 @@ internal static class PlatformPackageDefinition
117165
]
118166
);
119167

120-
// For ASP.NET, include these packages:
121-
// PackageFilterExpression.Parse("Microsoft.AspNetCore*"),
122-
// PackageFilterExpression.Parse("Microsoft.Authentication.WebAssembly.Msal"),
123-
// PackageFilterExpression.Parse("Microsoft.JSInterop*"),
124-
// PackageFilterExpression.Parse("Microsoft.Net.Http.Headers"),
125-
// PackageFilterExpression.Parse("Microsoft.Extensions.ApiDescription.Server"),
126-
// PackageFilterExpression.Parse("Microsoft.Extensions.Features"),
127-
// PackageFilterExpression.Parse("Microsoft.Extensions.Identity.Core"),
128-
// PackageFilterExpression.Parse("Microsoft.Extensions.Identity.Stores")
168+
public static bool IsRepositoryExcluded(string? repositoryUrl)
169+
{
170+
// Exclude package if the repository URL is missing,
171+
// or if the repo is in the excluded list.
172+
return (string.IsNullOrWhiteSpace(repositoryUrl) ||
173+
ExcludedRepositories.Contains(repositoryUrl));
174+
}
129175
}

PackageIndexer/Program.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ internal static class Program
88
private static async Task<int> Main(string[] args)
99
{
1010
#if DEBUG
11-
args = [@"c:\users\gewarren\desktop\Package Index 0227", "preview"];
11+
args = [@"c:\users\gewarren\desktop\Package Index 1015", "preview"];
1212
#endif
1313

1414
if ((args.Length == 0) || (args.Length > 2))
@@ -126,6 +126,12 @@ string indexPackagesPath
126126
File.WriteAllText(disabledPath, string.Empty);
127127
nugetStore.DeleteFromCache(id, version);
128128
}
129+
else if (PlatformPackageDefinition.IsRepositoryExcluded(packageEntry.Repository))
130+
{
131+
Console.WriteLine($"Excluding due to repository: {packageEntry.Repository}");
132+
File.WriteAllText(disabledPath, $"Excluded repository: {packageEntry.Repository}");
133+
nugetStore.DeleteFromCache(id, version);
134+
}
129135
else
130136
{
131137
using (FileStream stream = File.Create(path))

0 commit comments

Comments
 (0)