Skip to content

Commit eb06620

Browse files
author
Guy Fankam
committed
Prioritize policy fragments
1 parent 0e10dad commit eb06620

3 files changed

Lines changed: 55 additions & 3 deletions

File tree

tools/code/publisher/App.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ file sealed class RunPublisherHandler(ProcessNamedValuesToPut processNamedValues
1717
ProcessDeletedNamedValues processDeletedNamedValues,
1818
ProcessBackendsToPut processBackendsToPut,
1919
ProcessDeletedBackends processDeletedBackends,
20+
ProcessPolicyFragmentsToPut processPolicyFragmentsToPut,
21+
ProcessDeletedPolicyFragments processDeletedPolicyFragments,
2022
GetPublisherFiles getPublisherFiles,
2123
PublishFile publishFile,
2224
ILoggerFactory loggerFactory)
@@ -27,11 +29,13 @@ public async ValueTask Handle(CancellationToken cancellationToken)
2729
{
2830
await processNamedValuesToPut(cancellationToken);
2931
await processBackendsToPut(cancellationToken);
32+
await processPolicyFragmentsToPut(cancellationToken);
3033

3134
await ProcessPublisherFiles(cancellationToken);
3235

33-
await processDeletedNamedValues(cancellationToken);
36+
await processDeletedPolicyFragments(cancellationToken);
3437
await processDeletedBackends(cancellationToken);
38+
await processDeletedNamedValues(cancellationToken);
3539

3640
logger.LogInformation("Publisher completed.");
3741
}
@@ -80,7 +84,6 @@ private Option<PublisherAction> FindPublisherAction(FileInfo file) =>
8084
| findVersionSetAction(file)
8185
| findLoggerAction(file)
8286
| findDiagnosticAction(file)
83-
| findPolicyFragmentAction(file)
8487
| findServicePolicyAction(file)
8588
| findProductAction(file)
8689
| findProductPolicyAction(file)
@@ -104,6 +107,8 @@ public static void ConfigureRunPublisher(IServiceCollection services)
104107
NamedValueServices.ConfigureProcessDeletedNamedValues(services);
105108
BackendServices.ConfigureProcessBackendsToPut(services);
106109
BackendServices.ConfigureProcessDeletedBackends(services);
110+
PolicyFragmentServices.ConfigureProcessPolicyFragmentsToPut(services);
111+
PolicyFragmentServices.ConfigureProcessDeletedPolicyFragments(services);
107112
ConfigurePublishFile(services);
108113

109114
services.TryAddSingleton<RunPublisherHandler>();

tools/code/publisher/Backend.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
using Microsoft.Extensions.DependencyInjection.Extensions;
77
using Microsoft.Extensions.Logging;
88
using System;
9-
using System.Collections.Generic;
109
using System.Collections.Immutable;
1110
using System.IO;
1211
using System.Linq;

tools/code/publisher/PolicyFragment.cs

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,15 @@
99
using System.Collections.Generic;
1010
using System.Collections.Immutable;
1111
using System.IO;
12+
using System.Linq;
1213
using System.Threading;
1314
using System.Threading.Tasks;
1415

1516
namespace publisher;
1617

18+
internal delegate ValueTask ProcessPolicyFragmentsToPut(CancellationToken cancellationToken);
19+
internal delegate ValueTask ProcessDeletedPolicyFragments(CancellationToken cancellationToken);
20+
1721
internal delegate Option<PublisherAction> FindPolicyFragmentAction(FileInfo file);
1822

1923
file delegate Option<PolicyFragmentName> TryParsePolicyFragmentName(FileInfo file);
@@ -34,6 +38,30 @@ namespace publisher;
3438

3539
internal delegate ValueTask OnDeletingPolicyFragment(PolicyFragmentName name, CancellationToken cancellationToken);
3640

41+
file sealed class ProcessPolicyFragmentsToPutHandler(GetPublisherFiles getPublisherFiles,
42+
TryParsePolicyFragmentName tryParsePolicyFragmentName,
43+
IsPolicyFragmentNameInSourceControl isNameInSourceControl,
44+
PutPolicyFragment putPolicyFragment)
45+
{
46+
public async ValueTask Handle(CancellationToken cancellationToken) =>
47+
await getPublisherFiles()
48+
.Choose(tryParsePolicyFragmentName.Invoke)
49+
.Where(isNameInSourceControl.Invoke)
50+
.IterParallel(putPolicyFragment.Invoke, cancellationToken);
51+
}
52+
53+
file sealed class ProcessDeletedPolicyFragmentsHandler(GetPublisherFiles getPublisherFiles,
54+
TryParsePolicyFragmentName tryParsePolicyFragmentName,
55+
IsPolicyFragmentNameInSourceControl isNameInSourceControl,
56+
DeletePolicyFragment deletePolicyFragment)
57+
{
58+
public async ValueTask Handle(CancellationToken cancellationToken) =>
59+
await getPublisherFiles()
60+
.Choose(tryParsePolicyFragmentName.Invoke)
61+
.Where(name => isNameInSourceControl.Invoke(name) is false)
62+
.IterParallel(deletePolicyFragment.Invoke, cancellationToken);
63+
}
64+
3765
file sealed class FindPolicyFragmentActionHandler(TryParsePolicyFragmentName tryParseName, ProcessPolicyFragment processPolicyFragment)
3866
{
3967
public Option<PublisherAction> Handle(FileInfo file) =>
@@ -239,6 +267,26 @@ public async ValueTask Handle(PolicyFragmentName name, CancellationToken cancell
239267

240268
internal static class PolicyFragmentServices
241269
{
270+
public static void ConfigureProcessPolicyFragmentsToPut(IServiceCollection services)
271+
{
272+
ConfigureTryParsePolicyFragmentName(services);
273+
ConfigureIsPolicyFragmentNameInSourceControl(services);
274+
ConfigurePutPolicyFragment(services);
275+
276+
services.TryAddSingleton<ProcessPolicyFragmentsToPutHandler>();
277+
services.TryAddSingleton<ProcessPolicyFragmentsToPut>(provider => provider.GetRequiredService<ProcessPolicyFragmentsToPutHandler>().Handle);
278+
}
279+
280+
public static void ConfigureProcessDeletedPolicyFragments(IServiceCollection services)
281+
{
282+
ConfigureTryParsePolicyFragmentName(services);
283+
ConfigureIsPolicyFragmentNameInSourceControl(services);
284+
ConfigureDeletePolicyFragment(services);
285+
286+
services.TryAddSingleton<ProcessDeletedPolicyFragmentsHandler>();
287+
services.TryAddSingleton<ProcessDeletedPolicyFragments>(provider => provider.GetRequiredService<ProcessDeletedPolicyFragmentsHandler>().Handle);
288+
}
289+
242290
public static void ConfigureFindPolicyFragmentAction(IServiceCollection services)
243291
{
244292
ConfigureTryParsePolicyFragmentName(services);

0 commit comments

Comments
 (0)