Skip to content

Commit ed9b369

Browse files
authored
Feature/refactor module hanlders (#211)
* Module Handlers WIP * Module Handlers * ReleaseNotes.md * Fix * Formatting Markdown * Fix * Fix * Fix * Fix * Fix nullability warnings * Fix warnings * Fix --------- Co-authored-by: Tom Longhurst <thomhurst@users.noreply.github.com>
1 parent 843c5f3 commit ed9b369

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+591
-377
lines changed

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ Define your pipeline in .NET! Strong types, intellisense, parallelisation, and t
5252
| ModularPipelines.TeamCity | Helpers for interacting with TeamCity build agents. | [![nuget](https://img.shields.io/nuget/v/ModularPipelines.TeamCity.svg)](https://www.nuget.org/packages/ModularPipelines.TeamCity/) |
5353
| ModularPipelines.Terraform | Helpers for interacting with Terraform CLI. | [![nuget](https://img.shields.io/nuget/v/ModularPipelines.Terraform.svg)](https://www.nuget.org/packages/ModularPipelines.Terraform/) |
5454

55-
5655
## Getting Started
5756

5857
If you want to see how to get started, or want to know more about ModularPipelines, [read the Wiki page here](https://github.com/thomhurst/ModularPipelines/wiki)

src/ModularPipelines.Build/Modules/NugetVersionGeneratorModule.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public NugetVersionGeneratorModule(IOptions<PublishSettings> publishSettings)
2323

2424
if (_publishSettings.Value.IsAlpha)
2525
{
26-
return $"{gitVersionInformation.FullSemVer}alpha{gitVersionInformation.CommitsSinceVersionSourcePadded!}";
26+
return $"{gitVersionInformation.FullSemVer}-alpha{gitVersionInformation.CommitsSinceVersionSourcePadded!}";
2727
}
2828

2929
return gitVersionInformation.FullSemVer;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
* Refactored Module Handlers for cleaner code

src/ModularPipelines.DotNet/DotNet.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public async Task<DotNetTestResult> Test(DotNetTestOptions options, Cancellation
7575
throw new DotNetTestFailedException(result, null);
7676
}
7777

78-
var trxContents = await _fileSystemContext.GetFile(trxFilePath).ReadAsync();
78+
var trxContents = await _fileSystemContext.GetFile(trxFilePath).ReadAsync(cancellationToken);
7979

8080
logger.LogDebug("Trx file contents: {Contents}", trxContents);
8181

src/ModularPipelines.Examples/Modules/GitVersionModule.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using Microsoft.Extensions.Logging;
2-
using ModularPipelines.Attributes;
32
using ModularPipelines.Context;
43
using ModularPipelines.Git.Extensions;
54
using ModularPipelines.Git.Options;

src/ModularPipelines.Examples/SubmodulesModule.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
using Microsoft.Extensions.Logging;
22
using ModularPipelines.Context;
3+
using ModularPipelines.Models;
34
using ModularPipelines.Modules;
45

56
namespace ModularPipelines.Examples;
67

78
public class SubmodulesModule : Module
89
{
10+
protected override Task<SkipDecision> ShouldSkip(IPipelineContext context)
11+
{
12+
return base.ShouldSkip(context);
13+
}
14+
915
/// <inheritdoc/>
1016
protected override async Task<IDictionary<string, object>?> ExecuteAsync(IPipelineContext context, CancellationToken cancellationToken)
1117
{

src/ModularPipelines/Context/NoModulePipelineContext.cs

Lines changed: 0 additions & 90 deletions
This file was deleted.

src/ModularPipelines/DependencyInjection/DependencyInjectionSetup.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ public static void Initialize(IServiceCollection services)
115115
.AddSingleton<IBuildSystemSecretMasker, BuildSystemSecretMasker>()
116116
.AddSingleton<IBuildSystemDetector, BuildSystemDetector>()
117117
.AddSingleton<ISmartCollapsableLoggingStringBlockProvider, SmartCollapsableLoggingStringBlockProvider>()
118-
.AddSingleton<IModuleIgnoreHandler, ModuleIgnoreHandler>()
118+
.AddSingleton<IModuleConditionHandler, ModuleConditionHandler>()
119119
.AddSingleton<IAssemblyLoadedTypesProvider, AssemblyLoadedTypesProvider>()
120120
.AddSingleton<IConsoleWriter, ConsoleWriter>()
121121
.AddSingleton<IEnvironmentVariables, EnvironmentVariables>();
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using Microsoft.Extensions.Logging;
2+
using ModularPipelines.Context;
3+
using ModularPipelines.Models;
4+
using ModularPipelines.Modules;
5+
6+
namespace ModularPipelines.Engine.Executors.ModuleHandlers;
7+
8+
internal class BaseHandler<T>
9+
{
10+
public Module<T> Module { get; }
11+
12+
public TaskCompletionSource<ModuleResult<T>> ModuleResultTaskCompletionSource => Module.ModuleResultTaskCompletionSource;
13+
14+
public IPipelineContext Context => Module.Context;
15+
16+
public ILogger Logger => Context.Logger;
17+
18+
public EngineCancellationToken EngineCancellationToken => Context.EngineCancellationToken;
19+
20+
public CancellationTokenSource ModuleCancellationTokenSource => Module.ModuleCancellationTokenSource;
21+
22+
public ModuleRunType RunType => Module.ModuleRunType;
23+
24+
protected BaseHandler(Module<T> module)
25+
{
26+
Module = module;
27+
}
28+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
using ModularPipelines.Models;
2+
using ModularPipelines.Modules;
3+
4+
namespace ModularPipelines.Engine.Executors.ModuleHandlers;
5+
6+
internal class CancellationHandler<T> : BaseHandler<T>, ICancellationHandler
7+
{
8+
public CancellationHandler(Module<T> module) : base(module)
9+
{
10+
}
11+
12+
public void SetupCancellation()
13+
{
14+
if (Module.ModuleRunType != ModuleRunType.AlwaysRun)
15+
{
16+
EngineCancellationToken.Token.Register(Module.ModuleCancellationTokenSource.Cancel);
17+
}
18+
19+
ModuleCancellationTokenSource.Token.ThrowIfCancellationRequested();
20+
}
21+
22+
public Task ConfigureModuleTimeout()
23+
{
24+
if (Module.Timeout == TimeSpan.Zero)
25+
{
26+
return Task.CompletedTask;
27+
}
28+
29+
ModuleCancellationTokenSource.CancelAfter(Module.Timeout);
30+
31+
return Task.Delay(Module.Timeout + TimeSpan.FromSeconds(30), ModuleCancellationTokenSource.Token);
32+
}
33+
}

0 commit comments

Comments
 (0)