diff --git a/build.cake b/build.cake index 4c78335..9dc3918 100644 --- a/build.cake +++ b/build.cake @@ -6,22 +6,26 @@ var isPaketInstalled = FileExists(paketPath); var target = Argument("target", "default"); Task("bootstrap-paket") - .WithCriteria(!isPaketInstalled) - .Does(() => + .WithCriteria(!isPaketInstalled) + .Does(() => + { + if (StartProcess(".paket/paket.bootstrapper.exe") != 0) { - if (StartProcess(".paket/paket.bootstrapper.exe") != 0) - Error("Unable to fetch paket.exe"); + Error("Unable to fetch paket.exe"); + } - paketPath = ".paket/paket.exe"; - }); + paketPath = ".paket/paket.exe"; + }); Task("paket-restore") - .IsDependentOn("bootstrap-paket") - .Does(() => + .IsDependentOn("bootstrap-paket") + .Does(() => + { + if (StartProcess(paketPath, "restore") != 0) { - if (StartProcess(paketPath, "restore") != 0) - Error("Paket restore failed"); - }); + Error("Paket restore failed"); + } + }); Task("compile") .IsDependentOn("paket-restore") @@ -30,6 +34,15 @@ Task("compile") MSBuild("./src/Cake.Parallel.sln"); }); +Task("compile-release") + .IsDependentOn("paket-restore") + .Does(() => + { + MSBuild("./src/Cake.Parallel.sln", new MSBuildSettings { + Configuration = "Release" + }); + }); + Task("xUnit") .IsDependentOn("compile") .Does(() => diff --git a/paket.dependencies b/paket.dependencies index b70e5d6..6279bef 100644 --- a/paket.dependencies +++ b/paket.dependencies @@ -1,7 +1,7 @@ framework: net461 source http://nuget.org/api/v2 -nuget Cake.Core 0.15.0 +nuget Cake.Core 0.19.1 nuget Cake.Testing nuget Shouldly -nuget xunit \ No newline at end of file +nuget xunit diff --git a/paket.lock b/paket.lock index 1b0a8b7..e7572ef 100644 --- a/paket.lock +++ b/paket.lock @@ -1,7 +1,7 @@ FRAMEWORK: NET461 NUGET remote: http://www.nuget.org/api/v2 - Cake.Core (0.15) + Cake.Core (0.19.1) Cake.Testing (0.15) Cake.Core (>= 0.15) Shouldly (2.8.2) diff --git a/src/Cake.Parallel/Cake.Parallel.Module.csproj b/src/Cake.Parallel/Cake.Parallel.Module.csproj index e2bf43d..54b3a40 100644 --- a/src/Cake.Parallel/Cake.Parallel.Module.csproj +++ b/src/Cake.Parallel/Cake.Parallel.Module.csproj @@ -46,6 +46,7 @@ + diff --git a/src/Cake.Parallel/ParallelActionTaskExtensions.cs b/src/Cake.Parallel/ParallelActionTaskExtensions.cs new file mode 100644 index 0000000..76a6904 --- /dev/null +++ b/src/Cake.Parallel/ParallelActionTaskExtensions.cs @@ -0,0 +1,12 @@ +using Cake.Core; + +namespace Cake.Parallel.Module +{ + public static class ParallelActionTaskExtensions + { + public static CakeTaskBuilder IgnoreCancellation(this CakeTaskBuilder task) + { + return task; + } + } +} diff --git a/src/Cake.Parallel/ParallelCakeEngine.cs b/src/Cake.Parallel/ParallelCakeEngine.cs index 96be7a6..422f3ac 100644 --- a/src/Cake.Parallel/ParallelCakeEngine.cs +++ b/src/Cake.Parallel/ParallelCakeEngine.cs @@ -90,6 +90,7 @@ public CakeReport RunTarget(ICakeContext context, IExecutionStrategy strategy, s var report = new CakeReport(); + var targetTask = graph.Traverse(target, (taskName, cts) => { if (cts.IsCancellationRequested) return; @@ -120,6 +121,12 @@ public CakeReport RunTarget(ICakeContext context, IExecutionStrategy strategy, s exceptionWasThrown = true; throw; } + catch(AggregateException ex) + { + exceptionWasThrown = true; + thrownException = ex.InnerException; + throw; + } catch (Exception ex) { exceptionWasThrown = true; @@ -142,11 +149,6 @@ public void RegisterTaskTeardownAction(Action action) _taskTeardownAction = action; } - public event EventHandler Setup; - public event EventHandler Teardown; - public event EventHandler TaskSetup; - public event EventHandler TaskTeardown; - private void performSetup(IExecutionStrategy strategy, ICakeContext context) { publishEvent(Setup, new SetupEventArgs(context)); @@ -225,6 +227,11 @@ private void executeTask(ICakeContext context, IExecutionStrategy strategy, Canc { strategy.Execute(task, context); } + catch (TaskCanceledException) + { + execptionWasThrown = true; + throw; + } catch (Exception exception) { execptionWasThrown = true; @@ -346,46 +353,10 @@ public void performTaskTeardown(ICakeContext context, IExecutionStrategy strateg } } - public IReadOnlyList Tasks { get; } - } - - public class SetupEventArgs : EventArgs - { - public ICakeContext Context { get; } - - public SetupEventArgs(ICakeContext context) - { - Context = context; - } - } - - public class TeardownEventArgs : EventArgs - { - public ITeardownContext TeardownContext { get; } - - public TeardownEventArgs(ITeardownContext teardownContext) - { - TeardownContext = teardownContext; - } - } - - public class TaskSetupEventArgs : EventArgs - { - public ITaskSetupContext TaskSetupContext { get; } - - public TaskSetupEventArgs(ITaskSetupContext taskSetupContext) - { - TaskSetupContext = taskSetupContext; - } - } - - public class TaskTeardownEventArgs : EventArgs - { - public ITaskTeardownContext TaskTeardownContext { get; } - - public TaskTeardownEventArgs(ITaskTeardownContext taskTeardownContext) - { - TaskTeardownContext = taskTeardownContext; - } + public IReadOnlyList Tasks => _tasks; + public event EventHandler Setup; + public event EventHandler Teardown; + public event EventHandler TaskSetup; + public event EventHandler TaskTeardown; } } diff --git a/src/Cake.Parallel/ParallelCakeModule.cs b/src/Cake.Parallel/ParallelCakeModule.cs index 2418005..5a9a2cd 100644 --- a/src/Cake.Parallel/ParallelCakeModule.cs +++ b/src/Cake.Parallel/ParallelCakeModule.cs @@ -5,9 +5,9 @@ namespace Cake.Parallel.Module { public class ParallelCakeModule : ICakeModule { - public void Register(ICakeContainerRegistry registry) + public void Register(ICakeContainerRegistrar registrar) { - registry.RegisterType().As().Singleton(); + registrar.RegisterType().As().Singleton(); } } }