From d108d1e09c8c84fab3e341fa39a09c831fd23153 Mon Sep 17 00:00:00 2001
From: Matthias Koch
Date: Thu, 3 Jan 2019 00:15:03 +0100
Subject: [PATCH 01/53] Show summary when cancelling in console
---
source/Nuke.Common/Execution/BuildExecutor.cs | 18 +++++++++++++++++-
.../Nuke.Common/Execution/ExecutionStatus.cs | 3 ++-
2 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/source/Nuke.Common/Execution/BuildExecutor.cs b/source/Nuke.Common/Execution/BuildExecutor.cs
index 48d843d87..42e55c746 100644
--- a/source/Nuke.Common/Execution/BuildExecutor.cs
+++ b/source/Nuke.Common/Execution/BuildExecutor.cs
@@ -36,6 +36,8 @@ public static int Execute(Expression> defaultTargetExpression
CheckActiveBuildProjectConfigurations();
AttachVisualStudioDebugger();
+ Console.CancelKeyPress += (s, e) => Finish();
+
try
{
build.OnBuildCreated();
@@ -66,6 +68,11 @@ public static int Execute(Expression> defaultTargetExpression
return -1;
}
finally
+ {
+ Finish();
+ }
+
+ void Finish()
{
if (Logger.OutputSink is SevereMessagesOutputSink outputSink)
{
@@ -73,11 +80,13 @@ public static int Execute(Expression> defaultTargetExpression
WriteWarningsAndErrors(outputSink);
}
+ // ReSharper disable AccessToModifiedClosure
if (executionList != null)
{
Logger.Log();
WriteSummary(executionList);
}
+ // ReSharper restore AccessToModifiedClosure
build.OnBuildFinished();
}
@@ -189,6 +198,7 @@ string[] GetExecutedTargets()
using (Logger.Block(target.Name))
{
+ target.Status = ExecutionStatus.Aborted;
build.OnTargetStart(target.Name);
var stopwatch = Stopwatch.StartNew();
@@ -282,6 +292,7 @@ string ToMinutesAndSeconds(TimeSpan duration)
case ExecutionStatus.Executed:
Logger.Success(line);
break;
+ case ExecutionStatus.Aborted:
case ExecutionStatus.NotRun:
case ExecutionStatus.Failed:
Logger.Error(line);
@@ -293,7 +304,12 @@ string ToMinutesAndSeconds(TimeSpan duration)
Logger.Log(CreateLine("Total", "", ToMinutesAndSeconds(totalDuration)));
Logger.Log(new string(c: '=', count: allColumns));
Logger.Log();
- if (executionList.All(x => x.Status != ExecutionStatus.Failed && x.Status != ExecutionStatus.NotRun))
+
+ var buildSucceeded = executionList
+ .All(x => x.Status != ExecutionStatus.Failed &&
+ x.Status != ExecutionStatus.NotRun &&
+ x.Status != ExecutionStatus.Aborted);
+ if (buildSucceeded)
Logger.Success($"Build succeeded on {DateTime.Now.ToString(CultureInfo.CurrentCulture)}.");
else
Logger.Error($"Build failed on {DateTime.Now.ToString(CultureInfo.CurrentCulture)}.");
diff --git a/source/Nuke.Common/Execution/ExecutionStatus.cs b/source/Nuke.Common/Execution/ExecutionStatus.cs
index 8f47408aa..4be72c884 100644
--- a/source/Nuke.Common/Execution/ExecutionStatus.cs
+++ b/source/Nuke.Common/Execution/ExecutionStatus.cs
@@ -13,6 +13,7 @@ public enum ExecutionStatus
Skipped,
Executed,
Failed,
- Absent
+ Absent,
+ Aborted
}
}
From 2a79bf7a76313b04e579b2cc8506ef5ae68829a7 Mon Sep 17 00:00:00 2001
From: Matthias Koch
Date: Thu, 3 Jan 2019 00:15:28 +0100
Subject: [PATCH 02/53] Fix GitRepositoryExtensions.IsOnDevelopBranch
---
source/Nuke.Common/Git/GitRepositoryExtensions.cs | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/source/Nuke.Common/Git/GitRepositoryExtensions.cs b/source/Nuke.Common/Git/GitRepositoryExtensions.cs
index ffba3f27c..414269817 100644
--- a/source/Nuke.Common/Git/GitRepositoryExtensions.cs
+++ b/source/Nuke.Common/Git/GitRepositoryExtensions.cs
@@ -28,9 +28,9 @@ public static bool IsOnMasterBranch(this GitRepository repository)
public static bool IsOnDevelopBranch(this GitRepository repository)
{
- return repository.Branch?.EqualsOrdinalIgnoreCase("dev") ??
- repository.Branch?.EqualsOrdinalIgnoreCase("develop") ??
- repository.Branch?.EqualsOrdinalIgnoreCase("development") ?? false;
+ return (repository.Branch?.EqualsOrdinalIgnoreCase("dev") ?? false) ||
+ (repository.Branch?.EqualsOrdinalIgnoreCase("develop") ?? false) ||
+ (repository.Branch?.EqualsOrdinalIgnoreCase("development") ?? false);
}
public static bool IsOnFeatureBranch(this GitRepository repository)
From a1ac284b52062c636981d4cc7d15738dd04cbf98 Mon Sep 17 00:00:00 2001
From: Matthias Koch
Date: Thu, 3 Jan 2019 00:17:47 +0100
Subject: [PATCH 03/53] Use ElementAtOrDefault in ArrayExtensions.Deconstruct
---
.../Collections/Array.Deconstruct.cs | 42 +++++++++----------
1 file changed, 21 insertions(+), 21 deletions(-)
diff --git a/source/Nuke.Common/Utilities/Collections/Array.Deconstruct.cs b/source/Nuke.Common/Utilities/Collections/Array.Deconstruct.cs
index 8cd3117d7..d3be5673f 100644
--- a/source/Nuke.Common/Utilities/Collections/Array.Deconstruct.cs
+++ b/source/Nuke.Common/Utilities/Collections/Array.Deconstruct.cs
@@ -13,47 +13,47 @@ public static class ArrayExtensions
{
public static void Deconstruct(this T[] items, out T t0)
{
- t0 = items.Length > 0 ? items[0] : default(T);
+ t0 = items.ElementAtOrDefault(0);
}
public static void Deconstruct(this T[] items, out T t0, out T t1)
{
- t0 = items.Length > 0 ? items[0] : default(T);
- t1 = items.Length > 1 ? items[1] : default(T);
+ t0 = items.ElementAtOrDefault(0);
+ t1 = items.ElementAtOrDefault(1);
}
public static void Deconstruct(this T[] items, out T t0, out T t1, out T t2)
{
- t0 = items.Length > 0 ? items[0] : default(T);
- t1 = items.Length > 1 ? items[1] : default(T);
- t2 = items.Length > 2 ? items[2] : default(T);
+ t0 = items.ElementAtOrDefault(0);
+ t1 = items.ElementAtOrDefault(1);
+ t2 = items.ElementAtOrDefault(2);
}
public static void Deconstruct(this T[] items, out T t0, out T t1, out T t2, out T t3)
{
- t0 = items.Length > 0 ? items[0] : default(T);
- t1 = items.Length > 1 ? items[1] : default(T);
- t2 = items.Length > 2 ? items[2] : default(T);
- t3 = items.Length > 3 ? items[3] : default(T);
+ t0 = items.ElementAtOrDefault(0);
+ t1 = items.ElementAtOrDefault(1);
+ t2 = items.ElementAtOrDefault(2);
+ t3 = items.ElementAtOrDefault(3);
}
public static void Deconstruct(this T[] items, out T t0, out T t1, out T t2, out T t3, out T t4)
{
- t0 = items.Length > 0 ? items[0] : default(T);
- t1 = items.Length > 1 ? items[1] : default(T);
- t2 = items.Length > 2 ? items[2] : default(T);
- t3 = items.Length > 3 ? items[3] : default(T);
- t4 = items.Length > 4 ? items[4] : default(T);
+ t0 = items.ElementAtOrDefault(0);
+ t1 = items.ElementAtOrDefault(1);
+ t2 = items.ElementAtOrDefault(2);
+ t3 = items.ElementAtOrDefault(3);
+ t4 = items.ElementAtOrDefault(4);
}
public static void Deconstruct(this T[] items, out T t0, out T t1, out T t2, out T t3, out T t4, out T t5)
{
- t0 = items.Length > 0 ? items[0] : default(T);
- t1 = items.Length > 1 ? items[1] : default(T);
- t2 = items.Length > 2 ? items[2] : default(T);
- t3 = items.Length > 3 ? items[3] : default(T);
- t4 = items.Length > 4 ? items[4] : default(T);
- t5 = items.Length > 5 ? items[5] : default(T);
+ t0 = items.ElementAtOrDefault(0);
+ t1 = items.ElementAtOrDefault(1);
+ t2 = items.ElementAtOrDefault(2);
+ t3 = items.ElementAtOrDefault(3);
+ t4 = items.ElementAtOrDefault(4);
+ t5 = items.ElementAtOrDefault(5);
}
}
}
From afb02a76717da9f899124bf6ca230356946fdc23 Mon Sep 17 00:00:00 2001
From: Matthias Koch
Date: Thu, 3 Jan 2019 00:42:10 +0100
Subject: [PATCH 04/53] Add build extensions as attributes
---
source/Nuke.Common/Constants.cs | 6 +++
source/Nuke.Common/Execution/BuildExecutor.cs | 11 ++---
.../Execution/BuildExtensionAttributeBase.cs | 21 +++++++++
.../CheckPathEnvironmentVariableAttribute.cs | 20 ++++++++
.../Execution/HandleHelpRequestsAttribute.cs | 27 +++++++++++
.../HandleShellCompletionAttribute.cs | 47 +++++++++++++++++++
.../HandleVisualStudioDebuggingAttribute.cs | 30 ++++++++++++
source/Nuke.Common/NukeBuild.cs | 3 ++
8 files changed, 159 insertions(+), 6 deletions(-)
create mode 100644 source/Nuke.Common/Execution/BuildExtensionAttributeBase.cs
create mode 100644 source/Nuke.Common/Execution/CheckPathEnvironmentVariableAttribute.cs
create mode 100644 source/Nuke.Common/Execution/HandleHelpRequestsAttribute.cs
create mode 100644 source/Nuke.Common/Execution/HandleShellCompletionAttribute.cs
create mode 100644 source/Nuke.Common/Execution/HandleVisualStudioDebuggingAttribute.cs
diff --git a/source/Nuke.Common/Constants.cs b/source/Nuke.Common/Constants.cs
index eb2ba1e7f..ec9096c23 100644
--- a/source/Nuke.Common/Constants.cs
+++ b/source/Nuke.Common/Constants.cs
@@ -18,6 +18,7 @@ internal static class Constants
internal const string InvokedTargetsParameterName = "Target";
internal const string SkippedTargetsParameterName = "Skip";
+ public const string VisualStudioDebugParameterName = "visual-studio-debug";
internal const string CompletionParameterName = "shell-completion";
[CanBeNull]
@@ -45,5 +46,10 @@ internal static PathConstruction.AbsolutePath GetBuildAttemptFile(PathConstructi
{
return GetTemporaryDirectory(rootDirectory) / "build-attempt.log";
}
+
+ public static PathConstruction.AbsolutePath GetVisualStudioDebugFile(PathConstruction.AbsolutePath rootDirectory)
+ {
+ return GetTemporaryDirectory(rootDirectory) / $"{VisualStudioDebugParameterName}.log";
+ }
}
}
diff --git a/source/Nuke.Common/Execution/BuildExecutor.cs b/source/Nuke.Common/Execution/BuildExecutor.cs
index 42e55c746..498898e48 100644
--- a/source/Nuke.Common/Execution/BuildExecutor.cs
+++ b/source/Nuke.Common/Execution/BuildExecutor.cs
@@ -9,6 +9,7 @@
using System.IO;
using System.Linq;
using System.Linq.Expressions;
+using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
using Nuke.Common.IO;
@@ -32,9 +33,8 @@ public static int Execute(Expression> defaultTargetExpression
var executionList = default(IReadOnlyCollection);
var build = CreateBuildInstance(defaultTargetExpression);
- HandleCompletion(build);
- CheckActiveBuildProjectConfigurations();
- AttachVisualStudioDebugger();
+ var extensions = build.GetType().GetCustomAttributes().ToList();
+ extensions.ForEach(x => x.PreUserCode(build));
Console.CancelKeyPress += (s, e) => Finish();
@@ -49,10 +49,9 @@ public static int Execute(Expression> defaultTargetExpression
Logger.Log($"NUKE Execution Engine {typeof(BuildExecutor).Assembly.GetInformationalText()}");
Logger.Log(FigletTransform.GetText("NUKE"));
- HandleEarlyExits(build);
- ProcessManager.CheckPathEnvironmentVariable();
+ extensions.ForEach(x => x.PreInitialization(build));
+
InjectionUtility.InjectValues(build);
-
executionList = TargetDefinitionLoader.GetExecutingTargets(build, NukeBuild.InvokedTargets, NukeBuild.SkippedTargets);
RequirementService.ValidateRequirements(executionList, build);
diff --git a/source/Nuke.Common/Execution/BuildExtensionAttributeBase.cs b/source/Nuke.Common/Execution/BuildExtensionAttributeBase.cs
new file mode 100644
index 000000000..789abe2f6
--- /dev/null
+++ b/source/Nuke.Common/Execution/BuildExtensionAttributeBase.cs
@@ -0,0 +1,21 @@
+// Copyright 2019 Maintainers of NUKE.
+// Distributed under the MIT License.
+// https://github.com/nuke-build/nuke/blob/master/LICENSE
+
+using System;
+using System.Linq;
+
+namespace Nuke.Common.Execution
+{
+ [AttributeUsage(AttributeTargets.Class)]
+ public abstract class BuildExtensionAttributeBase : Attribute
+ {
+ public virtual void PreUserCode(NukeBuild instance)
+ {
+ }
+
+ public virtual void PreInitialization(NukeBuild instance)
+ {
+ }
+ }
+}
diff --git a/source/Nuke.Common/Execution/CheckPathEnvironmentVariableAttribute.cs b/source/Nuke.Common/Execution/CheckPathEnvironmentVariableAttribute.cs
new file mode 100644
index 000000000..15002b1b7
--- /dev/null
+++ b/source/Nuke.Common/Execution/CheckPathEnvironmentVariableAttribute.cs
@@ -0,0 +1,20 @@
+// Copyright 2019 Maintainers of NUKE.
+// Distributed under the MIT License.
+// https://github.com/nuke-build/nuke/blob/master/LICENSE
+
+using System;
+using System.Linq;
+using JetBrains.Annotations;
+using Nuke.Common.Tooling;
+
+namespace Nuke.Common.Execution
+{
+ [PublicAPI]
+ public class CheckPathEnvironmentVariableAttribute : BuildExtensionAttributeBase
+ {
+ public override void PreInitialization(NukeBuild instance)
+ {
+ ProcessManager.CheckPathEnvironmentVariable();
+ }
+ }
+}
diff --git a/source/Nuke.Common/Execution/HandleHelpRequestsAttribute.cs b/source/Nuke.Common/Execution/HandleHelpRequestsAttribute.cs
new file mode 100644
index 000000000..bb0e711d7
--- /dev/null
+++ b/source/Nuke.Common/Execution/HandleHelpRequestsAttribute.cs
@@ -0,0 +1,27 @@
+// Copyright 2019 Maintainers of NUKE.
+// Distributed under the MIT License.
+// https://github.com/nuke-build/nuke/blob/master/LICENSE
+
+using System;
+using System.Linq;
+
+namespace Nuke.Common.Execution
+{
+ internal class HandleHelpRequestsAttribute : BuildExtensionAttributeBase
+ {
+ public override void PreInitialization(NukeBuild instance)
+ {
+ if (NukeBuild.Help)
+ {
+ Logger.Log(HelpTextService.GetTargetsText(instance));
+ Logger.Log(HelpTextService.GetParametersText(instance));
+ }
+
+ if (NukeBuild.Graph)
+ GraphService.ShowGraph(instance);
+
+ if (NukeBuild.Help || NukeBuild.Graph)
+ Environment.Exit(exitCode: 0);
+ }
+ }
+}
diff --git a/source/Nuke.Common/Execution/HandleShellCompletionAttribute.cs b/source/Nuke.Common/Execution/HandleShellCompletionAttribute.cs
new file mode 100644
index 000000000..cd1eacd98
--- /dev/null
+++ b/source/Nuke.Common/Execution/HandleShellCompletionAttribute.cs
@@ -0,0 +1,47 @@
+// Copyright 2019 Maintainers of NUKE.
+// Distributed under the MIT License.
+// https://github.com/nuke-build/nuke/blob/master/LICENSE
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Nuke.Common.IO;
+using Nuke.Common.Tooling;
+
+namespace Nuke.Common.Execution
+{
+ internal class HandleShellCompletionAttribute : BuildExtensionAttributeBase
+ {
+ public override void PreUserCode(NukeBuild instance)
+ {
+ var completionItems = new SortedDictionary();
+
+ var targetNames = instance.TargetDefinitions.Select(x => x.Name).OrderBy(x => x).ToList();
+ completionItems[Constants.InvokedTargetsParameterName] = targetNames.ToArray();
+ completionItems[Constants.SkippedTargetsParameterName] = targetNames.ToArray();
+
+ string[] GetSubItems(Type type)
+ {
+ if (type.IsEnum)
+ return type.GetEnumNames();
+ if (type.IsSubclassOf(typeof(Enumeration)))
+ return type.GetFields(ReflectionService.Static).Select(x => x.Name).ToArray();
+ return null;
+ }
+
+ foreach (var parameter in InjectionUtility.GetParameterMembers(instance.GetType()))
+ {
+ var parameterName = ParameterService.Instance.GetParameterName(parameter);
+ if (completionItems.ContainsKey(parameterName))
+ continue;
+
+ completionItems[parameterName] = GetSubItems(parameter.GetFieldOrPropertyType())?.OrderBy(x => x).ToArray();
+ }
+
+ SerializationTasks.YamlSerializeToFile(completionItems, Constants.GetCompletionFile(NukeBuild.RootDirectory));
+
+ if (EnvironmentInfo.ParameterSwitch(Constants.CompletionParameterName))
+ Environment.Exit(exitCode: 0);
+ }
+ }
+}
diff --git a/source/Nuke.Common/Execution/HandleVisualStudioDebuggingAttribute.cs b/source/Nuke.Common/Execution/HandleVisualStudioDebuggingAttribute.cs
new file mode 100644
index 000000000..4cc44fbda
--- /dev/null
+++ b/source/Nuke.Common/Execution/HandleVisualStudioDebuggingAttribute.cs
@@ -0,0 +1,30 @@
+// Copyright 2019 Maintainers of NUKE.
+// Distributed under the MIT License.
+// https://github.com/nuke-build/nuke/blob/master/LICENSE
+
+using System;
+using System.Diagnostics;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using JetBrains.Annotations;
+
+namespace Nuke.Common.Execution
+{
+ [PublicAPI]
+ public class HandleVisualStudioDebuggingAttribute : BuildExtensionAttributeBase
+ {
+ public int TimeoutInMilliseconds { get; } = 10_000;
+
+ public override void PreUserCode(NukeBuild instance)
+ {
+ if (!ParameterService.Instance.GetParameter(Constants.VisualStudioDebugParameterName))
+ return;
+
+ File.WriteAllText(Constants.GetVisualStudioDebugFile(NukeBuild.RootDirectory),
+ Process.GetCurrentProcess().Id.ToString());
+ ControlFlow.Assert(SpinWait.SpinUntil(() => Debugger.IsAttached, millisecondsTimeout: TimeoutInMilliseconds),
+ $"VisualStudio debugger was not attached within {TimeoutInMilliseconds} milliseconds.");
+ }
+ }
+}
diff --git a/source/Nuke.Common/NukeBuild.cs b/source/Nuke.Common/NukeBuild.cs
index 570e21752..0259e63e6 100644
--- a/source/Nuke.Common/NukeBuild.cs
+++ b/source/Nuke.Common/NukeBuild.cs
@@ -42,6 +42,9 @@ namespace Nuke.Common
///
///
[PublicAPI]
+ [HandleHelpRequests]
+ [HandleShellCompletion]
+ [HandleVisualStudioDebugging]
public abstract partial class NukeBuild
{
///
From 04cfa497ca23488e109fe9bd7e55f750b94a189d Mon Sep 17 00:00:00 2001
From: Matthias Koch
Date: Thu, 3 Jan 2019 13:09:32 +0100
Subject: [PATCH 05/53] Add ToolSettingsExtensions.Multiplex
---
build/Build.cs | 37 +++---
.../Generators/TaskGenerator.cs | 110 +++++++++---------
source/Nuke.Common/Tooling/Configure.cs | 2 +
.../Tooling/ToolSettingsExtensions.cs | 54 +++++++++
4 files changed, 126 insertions(+), 77 deletions(-)
diff --git a/build/Build.cs b/build/Build.cs
index cd86c8b62..406d2c191 100644
--- a/build/Build.cs
+++ b/build/Build.cs
@@ -9,6 +9,7 @@
using Nuke.Common;
using Nuke.Common.Git;
using Nuke.Common.ProjectModel;
+using Nuke.Common.Tooling;
using Nuke.Common.Tools.DotNet;
using Nuke.Common.Tools.GitVersion;
using Nuke.Common.Tools.InspectCode;
@@ -86,29 +87,27 @@ partial class Build : NukeBuild
.SetFileVersion(GitVersion.GetNormalizedFileVersion())
.SetInformationalVersion(GitVersion.InformationalVersion));
- var publishSettings = new DotNetPublishSettings()
+ DotNetPublish(s => s
.EnableNoRestore()
.SetConfiguration(Configuration)
.SetAssemblyVersion(GitVersion.GetNormalizedAssemblyVersion())
.SetFileVersion(GitVersion.GetNormalizedFileVersion())
- .SetInformationalVersion(GitVersion.InformationalVersion);
-
- DotNetPublish(s => publishSettings
- .SetProject(GlobalToolProject));
-
- DotNetPublish(s => publishSettings
- .SetProject(CommonProject)
- .SetFramework("netstandard2.0"));
- DotNetPublish(s => publishSettings
- .SetProject(CommonProject)
- .SetFramework("net461"));
-
- DotNetPublish(s => publishSettings
- .SetProject(CodeGenerationProject)
- .SetFramework("netstandard2.0"));
- DotNetPublish(s => publishSettings
- .SetProject(CodeGenerationProject)
- .SetFramework("net461"));
+ .SetInformationalVersion(GitVersion.InformationalVersion)
+ .Multiplex(
+ ss => ss
+ .SetProject(GlobalToolProject),
+ ss => ss
+ .SetProject(CommonProject)
+ .SetFramework("netstandard2.0"),
+ ss => ss
+ .SetProject(CommonProject)
+ .SetFramework("net461"),
+ ss => ss
+ .SetProject(CodeGenerationProject)
+ .SetFramework("netstandard2.0"),
+ ss => ss
+ .SetProject(CodeGenerationProject)
+ .SetFramework("net461")));
});
string ChangelogFile => RootDirectory / "CHANGELOG.md";
diff --git a/source/Nuke.CodeGeneration/Generators/TaskGenerator.cs b/source/Nuke.CodeGeneration/Generators/TaskGenerator.cs
index 57c163a00..4d4bcf021 100644
--- a/source/Nuke.CodeGeneration/Generators/TaskGenerator.cs
+++ b/source/Nuke.CodeGeneration/Generators/TaskGenerator.cs
@@ -30,36 +30,12 @@ public static void Run(Tool tool, ToolWriter toolWriter)
w.WriteToolPath();
w.WriteGenericTask();
tool.Tasks.ForEach(x => new TaskWriter(x, toolWriter)
- .WriteMainTask()
- .WriteTaskOverloads());
+ .WriteToolSettingsTask()
+ .WriteConfiguratorTask()
+ .WriteMultiplexConfiguratorTask());
});
}
- private static TaskWriter WriteTaskOverloads(this TaskWriter writer, int index = 0)
- {
- var task = writer.Task;
- var properties = task.SettingsClass.Properties.Where(x => x.CreateOverload).Take(index + 1).ToList();
-
- if (properties.Count == 0 || index >= properties.Count)
- return writer;
-
- var additionalParameterDeclarations = properties.Select(x => $"{x.GetNullabilityAttribute()}{x.Type} {x.Name.ToInstance()}");
- var nextArguments = properties.AsEnumerable().Reverse().Skip(count: 1).Reverse().Select(x => x.Name.ToInstance());
- var currentArgument = properties.Last();
- var setter = $"x => configurator(x).Set{currentArgument.Name}({currentArgument.Name.ToInstance()})";
- var allArguments = nextArguments.Concat(new[] { setter });
- var taskCallPrefix = task.HasReturnValue() ? "return " : string.Empty;
-
- writer
- .WriteSummary(task)
- .WriteTaskSignature(additionalParameterDeclarations)
- .WriteBlock(w => w
- .WriteLine("configurator = configurator ?? (x => x);")
- .WriteLine($"return {taskCallPrefix}{task.GetTaskMethodName()}({allArguments.JoinComma()});"));
-
- return writer.WriteTaskOverloads(index + 1);
- }
-
private static void WriteGenericTask(this ToolWriter writer)
{
var tool = writer.Tool;
@@ -93,26 +69,61 @@ private static void WriteGenericTask(this ToolWriter writer)
.WriteLine("return process.Output;"));
}
- private static TaskWriter WriteMainTask(this TaskWriter writer)
+ private static TaskWriter WriteToolSettingsTask(this TaskWriter writer)
{
+ var task = writer.Task;
+ var returnType = task.HasReturnValue()
+ ? $"({task.ReturnType} Result, IReadOnlyCollection
For more details, visit the official website.
- public static IReadOnlyCollection DotNetPublish(Configure configurator = null)
+ public static IReadOnlyCollection DotNetPublish(DotNetPublishSettings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new DotNetPublishSettings());
+ toolSettings = toolSettings ?? new DotNetPublishSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
+ /// dotnet publish compiles the application, reads through its dependencies specified in the project file, and publishes the resulting set of files to a directory. The output will contain the following:
- Intermediate Language (IL) code in an assembly with a dll extension.
- .deps.json file that contains all of the dependencies of the project.
- .runtime.config.json file that specifies the shared runtime that the application expects, as well as other configuration options for the runtime (for example, garbage collection type).
- The application's dependencies. These are copied from the NuGet cache into the output folder.
The dotnet publish command's output is ready for deployment to a hosting system (for example, a server, PC, Mac, laptop) for execution and is the only officially supported way to prepare the application for deployment. Depending on the type of deployment that the project specifies, the hosting system may or may not have the .NET Core shared runtime installed on it. For more information, see .NET Core Application Deployment. For the directory structure of a published application, see Directory structure.For more details, visit the official website.
+ public static IReadOnlyCollection DotNetPublish(Configure configurator)
+ {
+ return DotNetPublish(configurator(new DotNetPublishSettings()));
+ }
+ /// dotnet publish compiles the application, reads through its dependencies specified in the project file, and publishes the resulting set of files to a directory. The output will contain the following:
- Intermediate Language (IL) code in an assembly with a dll extension.
- .deps.json file that contains all of the dependencies of the project.
- .runtime.config.json file that specifies the shared runtime that the application expects, as well as other configuration options for the runtime (for example, garbage collection type).
- The application's dependencies. These are copied from the NuGet cache into the output folder.
The dotnet publish command's output is ready for deployment to a hosting system (for example, a server, PC, Mac, laptop) for execution and is the only officially supported way to prepare the application for deployment. Depending on the type of deployment that the project specifies, the hosting system may or may not have the .NET Core shared runtime installed on it. For more information, see .NET Core Application Deployment. For the directory structure of a published application, see Directory structure.For more details, visit the official website.
+ public static IEnumerable<(DotNetPublishSettings Settings, IReadOnlyCollection Output)> DotNetPublish(MultiplexConfigure configurator)
+ {
+ return configurator(new DotNetPublishSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: DotNetPublish(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
+ }
/// Pushes a package to the server and publishes it.
For more details, visit the official website.
- public static IReadOnlyCollection DotNetNuGetPush(Configure configurator = null)
+ public static IReadOnlyCollection DotNetNuGetPush(DotNetNuGetPushSettings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new DotNetNuGetPushSettings());
+ toolSettings = toolSettings ?? new DotNetNuGetPushSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
+ /// Pushes a package to the server and publishes it.
For more details, visit the official website.
+ public static IReadOnlyCollection DotNetNuGetPush(Configure configurator)
+ {
+ return DotNetNuGetPush(configurator(new DotNetNuGetPushSettings()));
+ }
+ /// Pushes a package to the server and publishes it.
For more details, visit the official website.
+ public static IEnumerable<(DotNetNuGetPushSettings Settings, IReadOnlyCollection Output)> DotNetNuGetPush(MultiplexConfigure configurator)
+ {
+ return configurator(new DotNetNuGetPushSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: DotNetNuGetPush(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
+ }
}
#region DotNetTestSettings
/// Used within .
diff --git a/source/Nuke.Common/Tools/DupFinder/DupFinder.Generated.cs b/source/Nuke.Common/Tools/DupFinder/DupFinder.Generated.cs
index c0c80049f..57cb9790c 100644
--- a/source/Nuke.Common/Tools/DupFinder/DupFinder.Generated.cs
+++ b/source/Nuke.Common/Tools/DupFinder/DupFinder.Generated.cs
@@ -35,13 +35,25 @@ public static IReadOnlyCollection DupFinder(string arguments, string wor
return process.Output;
}
/// dupFinder is a free command line tool that finds duplicates in C# and Visual Basic .NET code - no more, no less. But being a JetBrains tool, dupFinder does it in a smart way. By default, it considers code fragments as duplicates not only if they are identical, but also if they are structurally similar, even if they contain different variables, fields, methods, types or literals. Of course, you can configure the allowed similarity as well as the minimum relative size of duplicated fragments.
For more details, visit the official website.
- public static IReadOnlyCollection DupFinder(Configure configurator = null)
+ public static IReadOnlyCollection DupFinder(DupFinderSettings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new DupFinderSettings());
+ toolSettings = toolSettings ?? new DupFinderSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
+ /// dupFinder is a free command line tool that finds duplicates in C# and Visual Basic .NET code - no more, no less. But being a JetBrains tool, dupFinder does it in a smart way. By default, it considers code fragments as duplicates not only if they are identical, but also if they are structurally similar, even if they contain different variables, fields, methods, types or literals. Of course, you can configure the allowed similarity as well as the minimum relative size of duplicated fragments.
For more details, visit the official website.
+ public static IReadOnlyCollection DupFinder(Configure configurator)
+ {
+ return DupFinder(configurator(new DupFinderSettings()));
+ }
+ /// dupFinder is a free command line tool that finds duplicates in C# and Visual Basic .NET code - no more, no less. But being a JetBrains tool, dupFinder does it in a smart way. By default, it considers code fragments as duplicates not only if they are identical, but also if they are structurally similar, even if they contain different variables, fields, methods, types or literals. Of course, you can configure the allowed similarity as well as the minimum relative size of duplicated fragments.
For more details, visit the official website.
+ public static IEnumerable<(DupFinderSettings Settings, IReadOnlyCollection Output)> DupFinder(MultiplexConfigure configurator)
+ {
+ return configurator(new DupFinderSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: DupFinder(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
+ }
}
#region DupFinderSettings
/// Used within .
diff --git a/source/Nuke.Common/Tools/GitLink/GitLink.Generated.cs b/source/Nuke.Common/Tools/GitLink/GitLink.Generated.cs
index fe7e7f852..3d0d7fc47 100644
--- a/source/Nuke.Common/Tools/GitLink/GitLink.Generated.cs
+++ b/source/Nuke.Common/Tools/GitLink/GitLink.Generated.cs
@@ -35,23 +35,47 @@ public static IReadOnlyCollection GitLink(string arguments, string worki
return process.Output;
}
/// GitLink makes symbol servers obsolete which saves you both time with uploading source files with symbols and the user no longer has to specify custom symbol servers (such as symbolsource.org). The advantage of GitLink is that it is fully customized for Git. It also works with GitHub or BitBucket urls so it does not require a local git repository to work. This makes it perfectly usable in continuous integration servers such as Continua CI. Updating all the pdb files is very fast. A solution with over 85 projects will be handled in less than 30 seconds. When using GitLink, the user no longer has to specify symbol servers. The only requirement is to ensure the check the Enable source server support option in Visual Studio.
For more details, visit the official website.
- public static IReadOnlyCollection GitLink2(Configure configurator = null)
+ public static IReadOnlyCollection GitLink2(GitLink2Settings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new GitLink2Settings());
+ toolSettings = toolSettings ?? new GitLink2Settings();
PreProcess(ref toolSettings);
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
/// GitLink makes symbol servers obsolete which saves you both time with uploading source files with symbols and the user no longer has to specify custom symbol servers (such as symbolsource.org). The advantage of GitLink is that it is fully customized for Git. It also works with GitHub or BitBucket urls so it does not require a local git repository to work. This makes it perfectly usable in continuous integration servers such as Continua CI. Updating all the pdb files is very fast. A solution with over 85 projects will be handled in less than 30 seconds. When using GitLink, the user no longer has to specify symbol servers. The only requirement is to ensure the check the Enable source server support option in Visual Studio.
For more details, visit the official website.
- public static IReadOnlyCollection GitLink3(Configure configurator = null)
+ public static IReadOnlyCollection GitLink2(Configure configurator)
{
- var toolSettings = configurator.InvokeSafe(new GitLink3Settings());
+ return GitLink2(configurator(new GitLink2Settings()));
+ }
+ /// GitLink makes symbol servers obsolete which saves you both time with uploading source files with symbols and the user no longer has to specify custom symbol servers (such as symbolsource.org). The advantage of GitLink is that it is fully customized for Git. It also works with GitHub or BitBucket urls so it does not require a local git repository to work. This makes it perfectly usable in continuous integration servers such as Continua CI. Updating all the pdb files is very fast. A solution with over 85 projects will be handled in less than 30 seconds. When using GitLink, the user no longer has to specify symbol servers. The only requirement is to ensure the check the Enable source server support option in Visual Studio.
For more details, visit the official website.
+ public static IEnumerable<(GitLink2Settings Settings, IReadOnlyCollection Output)> GitLink2(MultiplexConfigure configurator)
+ {
+ return configurator(new GitLink2Settings())
+ .Select(x => (ToolSettings: x, ReturnValue: GitLink2(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
+ }
+ /// GitLink makes symbol servers obsolete which saves you both time with uploading source files with symbols and the user no longer has to specify custom symbol servers (such as symbolsource.org). The advantage of GitLink is that it is fully customized for Git. It also works with GitHub or BitBucket urls so it does not require a local git repository to work. This makes it perfectly usable in continuous integration servers such as Continua CI. Updating all the pdb files is very fast. A solution with over 85 projects will be handled in less than 30 seconds. When using GitLink, the user no longer has to specify symbol servers. The only requirement is to ensure the check the Enable source server support option in Visual Studio.
For more details, visit the official website.
+ public static IReadOnlyCollection GitLink3(GitLink3Settings toolSettings = null)
+ {
+ toolSettings = toolSettings ?? new GitLink3Settings();
PreProcess(ref toolSettings);
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
+ /// GitLink makes symbol servers obsolete which saves you both time with uploading source files with symbols and the user no longer has to specify custom symbol servers (such as symbolsource.org). The advantage of GitLink is that it is fully customized for Git. It also works with GitHub or BitBucket urls so it does not require a local git repository to work. This makes it perfectly usable in continuous integration servers such as Continua CI. Updating all the pdb files is very fast. A solution with over 85 projects will be handled in less than 30 seconds. When using GitLink, the user no longer has to specify symbol servers. The only requirement is to ensure the check the Enable source server support option in Visual Studio.
For more details, visit the official website.
+ public static IReadOnlyCollection GitLink3(Configure configurator)
+ {
+ return GitLink3(configurator(new GitLink3Settings()));
+ }
+ /// GitLink makes symbol servers obsolete which saves you both time with uploading source files with symbols and the user no longer has to specify custom symbol servers (such as symbolsource.org). The advantage of GitLink is that it is fully customized for Git. It also works with GitHub or BitBucket urls so it does not require a local git repository to work. This makes it perfectly usable in continuous integration servers such as Continua CI. Updating all the pdb files is very fast. A solution with over 85 projects will be handled in less than 30 seconds. When using GitLink, the user no longer has to specify symbol servers. The only requirement is to ensure the check the Enable source server support option in Visual Studio.
For more details, visit the official website.
+ public static IEnumerable<(GitLink3Settings Settings, IReadOnlyCollection Output)> GitLink3(MultiplexConfigure configurator)
+ {
+ return configurator(new GitLink3Settings())
+ .Select(x => (ToolSettings: x, ReturnValue: GitLink3(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
+ }
}
#region GitLink2Settings
/// Used within .
diff --git a/source/Nuke.Common/Tools/GitReleaseManager/GitReleaseManager.Generated.cs b/source/Nuke.Common/Tools/GitReleaseManager/GitReleaseManager.Generated.cs
index 2c4f08685..fd241ea9f 100644
--- a/source/Nuke.Common/Tools/GitReleaseManager/GitReleaseManager.Generated.cs
+++ b/source/Nuke.Common/Tools/GitReleaseManager/GitReleaseManager.Generated.cs
@@ -35,45 +35,105 @@ public static IReadOnlyCollection GitReleaseManager(string arguments, st
return process.Output;
}
/// Adds an asset to an existing release.
For more details, visit the official website.
- public static IReadOnlyCollection GitReleaseManagerAddAssets(Configure configurator = null)
+ public static IReadOnlyCollection GitReleaseManagerAddAssets(GitReleaseManagerAddAssetsSettings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new GitReleaseManagerAddAssetsSettings());
+ toolSettings = toolSettings ?? new GitReleaseManagerAddAssetsSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
+ /// Adds an asset to an existing release.
For more details, visit the official website.
+ public static IReadOnlyCollection GitReleaseManagerAddAssets(Configure configurator)
+ {
+ return GitReleaseManagerAddAssets(configurator(new GitReleaseManagerAddAssetsSettings()));
+ }
+ /// Adds an asset to an existing release.
For more details, visit the official website.
+ public static IEnumerable<(GitReleaseManagerAddAssetsSettings Settings, IReadOnlyCollection Output)> GitReleaseManagerAddAssets(MultiplexConfigure configurator)
+ {
+ return configurator(new GitReleaseManagerAddAssetsSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: GitReleaseManagerAddAssets(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
+ }
/// Closes the milestone.
For more details, visit the official website.
- public static IReadOnlyCollection GitReleaseManagerClose(Configure configurator = null)
+ public static IReadOnlyCollection GitReleaseManagerClose(GitReleaseManagerCloseSettings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new GitReleaseManagerCloseSettings());
+ toolSettings = toolSettings ?? new GitReleaseManagerCloseSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
+ /// Closes the milestone.
For more details, visit the official website.
+ public static IReadOnlyCollection GitReleaseManagerClose(Configure configurator)
+ {
+ return GitReleaseManagerClose(configurator(new GitReleaseManagerCloseSettings()));
+ }
+ /// Closes the milestone.
For more details, visit the official website.
+ public static IEnumerable<(GitReleaseManagerCloseSettings Settings, IReadOnlyCollection Output)> GitReleaseManagerClose(MultiplexConfigure configurator)
+ {
+ return configurator(new GitReleaseManagerCloseSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: GitReleaseManagerClose(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
+ }
/// Creates a draft release notes from a milestone.
For more details, visit the official website.
- public static IReadOnlyCollection GitReleaseManagerCreate(Configure configurator = null)
+ public static IReadOnlyCollection GitReleaseManagerCreate(GitReleaseManagerCreateSettings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new GitReleaseManagerCreateSettings());
+ toolSettings = toolSettings ?? new GitReleaseManagerCreateSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
+ /// Creates a draft release notes from a milestone.
For more details, visit the official website.
+ public static IReadOnlyCollection GitReleaseManagerCreate(Configure configurator)
+ {
+ return GitReleaseManagerCreate(configurator(new GitReleaseManagerCreateSettings()));
+ }
+ /// Creates a draft release notes from a milestone.
For more details, visit the official website.
+ public static IEnumerable<(GitReleaseManagerCreateSettings Settings, IReadOnlyCollection Output)> GitReleaseManagerCreate(MultiplexConfigure configurator)
+ {
+ return configurator(new GitReleaseManagerCreateSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: GitReleaseManagerCreate(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
+ }
/// Exports all the Release Notes in markdown format.
For more details, visit the official website.
- public static IReadOnlyCollection GitReleaseManagerExport(Configure configurator = null)
+ public static IReadOnlyCollection GitReleaseManagerExport(GitReleaseManagerExportSettings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new GitReleaseManagerExportSettings());
+ toolSettings = toolSettings ?? new GitReleaseManagerExportSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
+ /// Exports all the Release Notes in markdown format.
For more details, visit the official website.
+ public static IReadOnlyCollection GitReleaseManagerExport(Configure configurator)
+ {
+ return GitReleaseManagerExport(configurator(new GitReleaseManagerExportSettings()));
+ }
+ /// Exports all the Release Notes in markdown format.
For more details, visit the official website.
+ public static IEnumerable<(GitReleaseManagerExportSettings Settings, IReadOnlyCollection Output)> GitReleaseManagerExport(MultiplexConfigure configurator)
+ {
+ return configurator(new GitReleaseManagerExportSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: GitReleaseManagerExport(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
+ }
/// Publishes the GitHub Release.
For more details, visit the official website.
- public static IReadOnlyCollection GitReleaseManagerPublish(Configure configurator = null)
+ public static IReadOnlyCollection GitReleaseManagerPublish(GitReleaseManagerPublishSettings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new GitReleaseManagerPublishSettings());
+ toolSettings = toolSettings ?? new GitReleaseManagerPublishSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
+ /// Publishes the GitHub Release.
For more details, visit the official website.
+ public static IReadOnlyCollection GitReleaseManagerPublish(Configure configurator)
+ {
+ return GitReleaseManagerPublish(configurator(new GitReleaseManagerPublishSettings()));
+ }
+ /// Publishes the GitHub Release.
For more details, visit the official website.
+ public static IEnumerable<(GitReleaseManagerPublishSettings Settings, IReadOnlyCollection Output)> GitReleaseManagerPublish(MultiplexConfigure configurator)
+ {
+ return configurator(new GitReleaseManagerPublishSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: GitReleaseManagerPublish(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
+ }
}
#region GitReleaseManagerAddAssetsSettings
/// Used within .
diff --git a/source/Nuke.Common/Tools/GitVersion/GitVersion.Generated.cs b/source/Nuke.Common/Tools/GitVersion/GitVersion.Generated.cs
index 228c8638a..f6d6db5a9 100644
--- a/source/Nuke.Common/Tools/GitVersion/GitVersion.Generated.cs
+++ b/source/Nuke.Common/Tools/GitVersion/GitVersion.Generated.cs
@@ -35,13 +35,25 @@ public static IReadOnlyCollection GitVersion(string arguments, string wo
return process.Output;
}
/// GitVersion is a tool to help you achieve Semantic Versioning on your project.
For more details, visit the official website.
- public static (GitVersion Result, IReadOnlyCollection Output) GitVersion(Configure configurator = null)
+ public static (GitVersion Result, IReadOnlyCollection Output) GitVersion(GitVersionSettings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new GitVersionSettings());
+ toolSettings = toolSettings ?? new GitVersionSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return (GetResult(process, toolSettings), process.Output);
}
+ /// GitVersion is a tool to help you achieve Semantic Versioning on your project.
For more details, visit the official website.
+ public static (GitVersion Result, IReadOnlyCollection Output) GitVersion(Configure configurator)
+ {
+ return GitVersion(configurator(new GitVersionSettings()));
+ }
+ /// GitVersion is a tool to help you achieve Semantic Versioning on your project.
For more details, visit the official website.
+ public static IEnumerable<(GitVersionSettings Settings, GitVersion Result, IReadOnlyCollection Output)> GitVersion(MultiplexConfigure configurator)
+ {
+ return configurator(new GitVersionSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: GitVersion(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue.Result, x.ReturnValue.Output)).ToList();
+ }
}
#region GitVersionSettings
/// Used within .
diff --git a/source/Nuke.Common/Tools/InspectCode/InspectCode.Generated.cs b/source/Nuke.Common/Tools/InspectCode/InspectCode.Generated.cs
index d4adaa575..9e071a4f6 100644
--- a/source/Nuke.Common/Tools/InspectCode/InspectCode.Generated.cs
+++ b/source/Nuke.Common/Tools/InspectCode/InspectCode.Generated.cs
@@ -35,9 +35,9 @@ public static IReadOnlyCollection InspectCode(string arguments, string w
return process.Output;
}
/// One of ReSharper's most notable features, code inspection, is available even without opening Visual Studio. InspectCode, a free command line tool requires a minimum of one parameter- your solution file- to apply all of ReSharper's inspections.
For more details, visit the official website.
- public static IReadOnlyCollection InspectCode(Configure configurator = null)
+ public static IReadOnlyCollection InspectCode(InspectCodeSettings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new InspectCodeSettings());
+ toolSettings = toolSettings ?? new InspectCodeSettings();
PreProcess(ref toolSettings);
var process = StartProcess(toolSettings);
process.AssertZeroExitCode();
@@ -45,16 +45,16 @@ public static IReadOnlyCollection InspectCode(ConfigureOne of ReSharper's most notable features, code inspection, is available even without opening Visual Studio. InspectCode, a free command line tool requires a minimum of one parameter- your solution file- to apply all of ReSharper's inspections.
For more details, visit the official website.
- public static IReadOnlyCollection InspectCode(string targetPath, Configure configurator = null)
+ public static IReadOnlyCollection InspectCode(Configure configurator)
{
- configurator = configurator ?? (x => x);
- return InspectCode(x => configurator(x).SetTargetPath(targetPath));
+ return InspectCode(configurator(new InspectCodeSettings()));
}
/// One of ReSharper's most notable features, code inspection, is available even without opening Visual Studio. InspectCode, a free command line tool requires a minimum of one parameter- your solution file- to apply all of ReSharper's inspections.
For more details, visit the official website.
- public static IReadOnlyCollection InspectCode(string targetPath, string output, Configure configurator = null)
+ public static IEnumerable<(InspectCodeSettings Settings, IReadOnlyCollection Output)> InspectCode(MultiplexConfigure configurator)
{
- configurator = configurator ?? (x => x);
- return InspectCode(targetPath, x => configurator(x).SetOutput(output));
+ return configurator(new InspectCodeSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: InspectCode(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
}
}
#region InspectCodeSettings
diff --git a/source/Nuke.Common/Tools/MSBuild/MSBuild.Generated.cs b/source/Nuke.Common/Tools/MSBuild/MSBuild.Generated.cs
index c314f57e7..9bf95ae3d 100644
--- a/source/Nuke.Common/Tools/MSBuild/MSBuild.Generated.cs
+++ b/source/Nuke.Common/Tools/MSBuild/MSBuild.Generated.cs
@@ -35,18 +35,24 @@ public static IReadOnlyCollection MSBuild(string arguments, string worki
return process.Output;
}
/// The Microsoft Build Engine is a platform for building applications. This engine, which is also known as MSBuild, provides an XML schema for a project file that controls how the build platform processes and builds software. Visual Studio uses MSBuild, but it doesn't depend on Visual Studio. By invoking msbuild.exe on your project or solution file, you can orchestrate and build products in environments where Visual Studio isn't installed. Visual Studio uses MSBuild to load and build managed projects. The project files in Visual Studio (.csproj,.vbproj, vcxproj, and others) contain MSBuild XML code that executes when you build a project by using the IDE. Visual Studio projects import all the necessary settings and build processes to do typical development work, but you can extend or modify them from within Visual Studio or by using an XML editor.
For more details, visit the official website.
- public static IReadOnlyCollection MSBuild(Configure configurator = null)
+ public static IReadOnlyCollection MSBuild(MSBuildSettings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new MSBuildSettings());
+ toolSettings = toolSettings ?? new MSBuildSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
/// The Microsoft Build Engine is a platform for building applications. This engine, which is also known as MSBuild, provides an XML schema for a project file that controls how the build platform processes and builds software. Visual Studio uses MSBuild, but it doesn't depend on Visual Studio. By invoking msbuild.exe on your project or solution file, you can orchestrate and build products in environments where Visual Studio isn't installed. Visual Studio uses MSBuild to load and build managed projects. The project files in Visual Studio (.csproj,.vbproj, vcxproj, and others) contain MSBuild XML code that executes when you build a project by using the IDE. Visual Studio projects import all the necessary settings and build processes to do typical development work, but you can extend or modify them from within Visual Studio or by using an XML editor.
For more details, visit the official website.
- public static IReadOnlyCollection MSBuild(string targetPath, Configure configurator = null)
+ public static IReadOnlyCollection MSBuild(Configure configurator)
{
- configurator = configurator ?? (x => x);
- return MSBuild(x => configurator(x).SetTargetPath(targetPath));
+ return MSBuild(configurator(new MSBuildSettings()));
+ }
+ /// The Microsoft Build Engine is a platform for building applications. This engine, which is also known as MSBuild, provides an XML schema for a project file that controls how the build platform processes and builds software. Visual Studio uses MSBuild, but it doesn't depend on Visual Studio. By invoking msbuild.exe on your project or solution file, you can orchestrate and build products in environments where Visual Studio isn't installed. Visual Studio uses MSBuild to load and build managed projects. The project files in Visual Studio (.csproj,.vbproj, vcxproj, and others) contain MSBuild XML code that executes when you build a project by using the IDE. Visual Studio projects import all the necessary settings and build processes to do typical development work, but you can extend or modify them from within Visual Studio or by using an XML editor.
For more details, visit the official website.
+ public static IEnumerable<(MSBuildSettings Settings, IReadOnlyCollection Output)> MSBuild(MultiplexConfigure configurator)
+ {
+ return configurator(new MSBuildSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: MSBuild(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
}
}
#region MSBuildSettings
diff --git a/source/Nuke.Common/Tools/MSpec/MSpec.Generated.cs b/source/Nuke.Common/Tools/MSpec/MSpec.Generated.cs
index e2ba9c5cc..63bf17e46 100644
--- a/source/Nuke.Common/Tools/MSpec/MSpec.Generated.cs
+++ b/source/Nuke.Common/Tools/MSpec/MSpec.Generated.cs
@@ -35,18 +35,24 @@ public static IReadOnlyCollection MSpec(string arguments, string working
return process.Output;
}
/// MSpec is called a 'context/specification' test framework because of the 'grammar' that is used in describing and coding the tests or 'specs'.
For more details, visit the official website.
- public static IReadOnlyCollection MSpec(Configure configurator = null)
+ public static IReadOnlyCollection MSpec(MSpecSettings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new MSpecSettings());
+ toolSettings = toolSettings ?? new MSpecSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
/// MSpec is called a 'context/specification' test framework because of the 'grammar' that is used in describing and coding the tests or 'specs'.
For more details, visit the official website.
- public static IReadOnlyCollection MSpec(List assemblies, Configure configurator = null)
+ public static IReadOnlyCollection MSpec(Configure configurator)
{
- configurator = configurator ?? (x => x);
- return MSpec(x => configurator(x).SetAssemblies(assemblies));
+ return MSpec(configurator(new MSpecSettings()));
+ }
+ /// MSpec is called a 'context/specification' test framework because of the 'grammar' that is used in describing and coding the tests or 'specs'.
For more details, visit the official website.
+ public static IEnumerable<(MSpecSettings Settings, IReadOnlyCollection Output)> MSpec(MultiplexConfigure configurator)
+ {
+ return configurator(new MSpecSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: MSpec(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
}
}
#region MSpecSettings
diff --git a/source/Nuke.Common/Tools/Npm/Npm.Generated.cs b/source/Nuke.Common/Tools/Npm/Npm.Generated.cs
index 50db1e5c9..c9465aca3 100644
--- a/source/Nuke.Common/Tools/Npm/Npm.Generated.cs
+++ b/source/Nuke.Common/Tools/Npm/Npm.Generated.cs
@@ -35,21 +35,45 @@ public static IReadOnlyCollection Npm(string arguments, string workingDi
return process.Output;
}
/// Installs a package, and any packages that it depends on. If the package has a package-lock or shrinkwrap file, the installation of dependencies will be driven by that, with an npm-shrinkwrap.json taking precedence if both files exist. See package-lock.json and npm-shrinkwrap.A package is:
- a) A folder containing a program described by a package.json file
- b) A gzipped tarball containing (b)
- c) A url that resolves to (b)
- d) a <name>@<version> that is published on the registry (see npm-registry) with (c)
- e) a <name>@<tag> (see npm-dist-tag) that points to (d)
- f) a <name> that has a "latest" tag satisfying (e)
- g) a <git remote url> that resolves to (a)
For more details, visit the official website.
- public static IReadOnlyCollection NpmInstall(Configure configurator = null)
+ public static IReadOnlyCollection NpmInstall(NpmInstallSettings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new NpmInstallSettings());
+ toolSettings = toolSettings ?? new NpmInstallSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
+ /// Installs a package, and any packages that it depends on. If the package has a package-lock or shrinkwrap file, the installation of dependencies will be driven by that, with an npm-shrinkwrap.json taking precedence if both files exist. See package-lock.json and npm-shrinkwrap.A package is:
- a) A folder containing a program described by a package.json file
- b) A gzipped tarball containing (b)
- c) A url that resolves to (b)
- d) a <name>@<version> that is published on the registry (see npm-registry) with (c)
- e) a <name>@<tag> (see npm-dist-tag) that points to (d)
- f) a <name> that has a "latest" tag satisfying (e)
- g) a <git remote url> that resolves to (a)
For more details, visit the official website.
+ public static IReadOnlyCollection NpmInstall(Configure configurator)
+ {
+ return NpmInstall(configurator(new NpmInstallSettings()));
+ }
+ /// Installs a package, and any packages that it depends on. If the package has a package-lock or shrinkwrap file, the installation of dependencies will be driven by that, with an npm-shrinkwrap.json taking precedence if both files exist. See package-lock.json and npm-shrinkwrap.A package is:
- a) A folder containing a program described by a package.json file
- b) A gzipped tarball containing (b)
- c) A url that resolves to (b)
- d) a <name>@<version> that is published on the registry (see npm-registry) with (c)
- e) a <name>@<tag> (see npm-dist-tag) that points to (d)
- f) a <name> that has a "latest" tag satisfying (e)
- g) a <git remote url> that resolves to (a)
For more details, visit the official website.
+ public static IEnumerable<(NpmInstallSettings Settings, IReadOnlyCollection Output)> NpmInstall(MultiplexConfigure configurator)
+ {
+ return configurator(new NpmInstallSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: NpmInstall(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
+ }
/// Runs an arbitrary command from a package's "scripts" object. If no "command" is provided, it will list the available scripts. run[-script] is used by the test, start, restart, and stop commands, but can be called directly, as well. When the scripts in the package are printed out, they're separated into lifecycle (test, start, restart) and directly-run scripts."
For more details, visit the official website.
- public static IReadOnlyCollection NpmRun(Configure configurator = null)
+ public static IReadOnlyCollection NpmRun(NpmRunSettings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new NpmRunSettings());
+ toolSettings = toolSettings ?? new NpmRunSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
+ /// Runs an arbitrary command from a package's "scripts" object. If no "command" is provided, it will list the available scripts. run[-script] is used by the test, start, restart, and stop commands, but can be called directly, as well. When the scripts in the package are printed out, they're separated into lifecycle (test, start, restart) and directly-run scripts."
For more details, visit the official website.
+ public static IReadOnlyCollection NpmRun(Configure configurator)
+ {
+ return NpmRun(configurator(new NpmRunSettings()));
+ }
+ /// Runs an arbitrary command from a package's "scripts" object. If no "command" is provided, it will list the available scripts. run[-script] is used by the test, start, restart, and stop commands, but can be called directly, as well. When the scripts in the package are printed out, they're separated into lifecycle (test, start, restart) and directly-run scripts."
For more details, visit the official website.
+ public static IEnumerable<(NpmRunSettings Settings, IReadOnlyCollection Output)> NpmRun(MultiplexConfigure configurator)
+ {
+ return configurator(new NpmRunSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: NpmRun(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
+ }
}
#region NpmInstallSettings
/// Used within .
diff --git a/source/Nuke.Common/Tools/NuGet/NuGet.Generated.cs b/source/Nuke.Common/Tools/NuGet/NuGet.Generated.cs
index e0883e02b..0e68f53a2 100644
--- a/source/Nuke.Common/Tools/NuGet/NuGet.Generated.cs
+++ b/source/Nuke.Common/Tools/NuGet/NuGet.Generated.cs
@@ -35,46 +35,64 @@ public static IReadOnlyCollection NuGet(string arguments, string working
return process.Output;
}
/// The NuGet Command Line Interface (CLI) provides the full extent of NuGet functionality to install, create, publish, and manage packages.
For more details, visit the official website.
- public static IReadOnlyCollection NuGetPush(Configure configurator = null)
+ public static IReadOnlyCollection NuGetPush(NuGetPushSettings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new NuGetPushSettings());
+ toolSettings = toolSettings ?? new NuGetPushSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
/// The NuGet Command Line Interface (CLI) provides the full extent of NuGet functionality to install, create, publish, and manage packages.
For more details, visit the official website.
- public static IReadOnlyCollection NuGetPack(Configure configurator = null)
+ public static IReadOnlyCollection NuGetPush(Configure configurator)
{
- var toolSettings = configurator.InvokeSafe(new NuGetPackSettings());
+ return NuGetPush(configurator(new NuGetPushSettings()));
+ }
+ /// The NuGet Command Line Interface (CLI) provides the full extent of NuGet functionality to install, create, publish, and manage packages.
For more details, visit the official website.
+ public static IEnumerable<(NuGetPushSettings Settings, IReadOnlyCollection Output)> NuGetPush(MultiplexConfigure configurator)
+ {
+ return configurator(new NuGetPushSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: NuGetPush(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
+ }
+ /// The NuGet Command Line Interface (CLI) provides the full extent of NuGet functionality to install, create, publish, and manage packages.
For more details, visit the official website.
+ public static IReadOnlyCollection NuGetPack(NuGetPackSettings toolSettings = null)
+ {
+ toolSettings = toolSettings ?? new NuGetPackSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
/// The NuGet Command Line Interface (CLI) provides the full extent of NuGet functionality to install, create, publish, and manage packages.
For more details, visit the official website.
- public static IReadOnlyCollection NuGetPack(string targetPath, Configure configurator = null)
+ public static IReadOnlyCollection NuGetPack(Configure configurator)
{
- configurator = configurator ?? (x => x);
- return NuGetPack(x => configurator(x).SetTargetPath(targetPath));
+ return NuGetPack(configurator(new NuGetPackSettings()));
}
/// The NuGet Command Line Interface (CLI) provides the full extent of NuGet functionality to install, create, publish, and manage packages.
For more details, visit the official website.
- public static IReadOnlyCollection NuGetPack(string targetPath, string version, Configure configurator = null)
+ public static IEnumerable<(NuGetPackSettings Settings, IReadOnlyCollection Output)> NuGetPack(MultiplexConfigure configurator)
{
- configurator = configurator ?? (x => x);
- return NuGetPack(targetPath, x => configurator(x).SetVersion(version));
+ return configurator(new NuGetPackSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: NuGetPack(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
}
/// The NuGet Command Line Interface (CLI) provides the full extent of NuGet functionality to install, create, publish, and manage packages.
For more details, visit the official website.
- public static IReadOnlyCollection NuGetRestore(Configure configurator = null)
+ public static IReadOnlyCollection NuGetRestore(NuGetRestoreSettings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new NuGetRestoreSettings());
+ toolSettings = toolSettings ?? new NuGetRestoreSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
/// The NuGet Command Line Interface (CLI) provides the full extent of NuGet functionality to install, create, publish, and manage packages.
For more details, visit the official website.
- public static IReadOnlyCollection NuGetRestore(string targetPath, Configure configurator = null)
+ public static IReadOnlyCollection NuGetRestore(Configure configurator)
+ {
+ return NuGetRestore(configurator(new NuGetRestoreSettings()));
+ }
+ /// The NuGet Command Line Interface (CLI) provides the full extent of NuGet functionality to install, create, publish, and manage packages.
For more details, visit the official website.
+ public static IEnumerable<(NuGetRestoreSettings Settings, IReadOnlyCollection Output)> NuGetRestore(MultiplexConfigure configurator)
{
- configurator = configurator ?? (x => x);
- return NuGetRestore(x => configurator(x).SetTargetPath(targetPath));
+ return configurator(new NuGetRestoreSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: NuGetRestore(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
}
}
#region NuGetPushSettings
diff --git a/source/Nuke.Common/Tools/Nunit/Nunit3.Generated.cs b/source/Nuke.Common/Tools/Nunit/Nunit3.Generated.cs
index 6b798b9ff..b2980cf9c 100644
--- a/source/Nuke.Common/Tools/Nunit/Nunit3.Generated.cs
+++ b/source/Nuke.Common/Tools/Nunit/Nunit3.Generated.cs
@@ -35,18 +35,24 @@ public static IReadOnlyCollection Nunit(string arguments, string working
return process.Output;
}
/// NUnit is a unit-testing framework for all .Net languages. Initially ported from JUnit, the current production release, version 3.0, has been completely rewritten with many new features and support for a wide range of .NET platforms.
For more details, visit the official website.
- public static IReadOnlyCollection Nunit3(Configure configurator = null)
+ public static IReadOnlyCollection Nunit3(Nunit3Settings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new Nunit3Settings());
+ toolSettings = toolSettings ?? new Nunit3Settings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
/// NUnit is a unit-testing framework for all .Net languages. Initially ported from JUnit, the current production release, version 3.0, has been completely rewritten with many new features and support for a wide range of .NET platforms.
For more details, visit the official website.
- public static IReadOnlyCollection Nunit3(List inputFiles, Configure configurator = null)
+ public static IReadOnlyCollection Nunit3(Configure configurator)
{
- configurator = configurator ?? (x => x);
- return Nunit3(x => configurator(x).SetInputFiles(inputFiles));
+ return Nunit3(configurator(new Nunit3Settings()));
+ }
+ /// NUnit is a unit-testing framework for all .Net languages. Initially ported from JUnit, the current production release, version 3.0, has been completely rewritten with many new features and support for a wide range of .NET platforms.
For more details, visit the official website.
+ public static IEnumerable<(Nunit3Settings Settings, IReadOnlyCollection Output)> Nunit3(MultiplexConfigure configurator)
+ {
+ return configurator(new Nunit3Settings())
+ .Select(x => (ToolSettings: x, ReturnValue: Nunit3(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
}
}
#region Nunit3Settings
diff --git a/source/Nuke.Common/Tools/Octopus/Octopus.Generated.cs b/source/Nuke.Common/Tools/Octopus/Octopus.Generated.cs
index 1336bd020..a5674a100 100644
--- a/source/Nuke.Common/Tools/Octopus/Octopus.Generated.cs
+++ b/source/Nuke.Common/Tools/Octopus/Octopus.Generated.cs
@@ -35,37 +35,85 @@ public static IReadOnlyCollection Octopus(string arguments, string worki
return process.Output;
}
/// The Octo.exe pack command provides a number of other useful parameters that can be used to customize the way your package gets created, such as output folder, files to include and release notes.
For more details, visit the official website.
- public static IReadOnlyCollection OctopusPack(Configure configurator = null)
+ public static IReadOnlyCollection OctopusPack(OctopusPackSettings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new OctopusPackSettings());
+ toolSettings = toolSettings ?? new OctopusPackSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
+ /// The Octo.exe pack command provides a number of other useful parameters that can be used to customize the way your package gets created, such as output folder, files to include and release notes.
For more details, visit the official website.
+ public static IReadOnlyCollection OctopusPack(Configure configurator)
+ {
+ return OctopusPack(configurator(new OctopusPackSettings()));
+ }
+ /// The Octo.exe pack command provides a number of other useful parameters that can be used to customize the way your package gets created, such as output folder, files to include and release notes.
For more details, visit the official website.
+ public static IEnumerable<(OctopusPackSettings Settings, IReadOnlyCollection Output)> OctopusPack(MultiplexConfigure configurator)
+ {
+ return configurator(new OctopusPackSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: OctopusPack(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
+ }
/// The Octo.exe push command can push any of the supported packages types listed on this page.
For more details, visit the official website.
- public static IReadOnlyCollection OctopusPush(Configure configurator = null)
+ public static IReadOnlyCollection OctopusPush(OctopusPushSettings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new OctopusPushSettings());
+ toolSettings = toolSettings ?? new OctopusPushSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
+ /// The Octo.exe push command can push any of the supported packages types listed on this page.
For more details, visit the official website.
+ public static IReadOnlyCollection OctopusPush(Configure configurator)
+ {
+ return OctopusPush(configurator(new OctopusPushSettings()));
+ }
+ /// The Octo.exe push command can push any of the supported packages types listed on this page.
For more details, visit the official website.
+ public static IEnumerable<(OctopusPushSettings Settings, IReadOnlyCollection Output)> OctopusPush(MultiplexConfigure configurator)
+ {
+ return configurator(new OctopusPushSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: OctopusPush(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
+ }
/// The Octo.exe create-release can be used to automate the creation of releases. This allows you to easily integrate Octopus with other continuous integration servers.
For more details, visit the official website.
- public static IReadOnlyCollection OctopusCreateRelease(Configure configurator = null)
+ public static IReadOnlyCollection OctopusCreateRelease(OctopusCreateReleaseSettings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new OctopusCreateReleaseSettings());
+ toolSettings = toolSettings ?? new OctopusCreateReleaseSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
+ /// The Octo.exe create-release can be used to automate the creation of releases. This allows you to easily integrate Octopus with other continuous integration servers.
For more details, visit the official website.
+ public static IReadOnlyCollection OctopusCreateRelease(Configure configurator)
+ {
+ return OctopusCreateRelease(configurator(new OctopusCreateReleaseSettings()));
+ }
+ /// The Octo.exe create-release can be used to automate the creation of releases. This allows you to easily integrate Octopus with other continuous integration servers.
For more details, visit the official website.
+ public static IEnumerable<(OctopusCreateReleaseSettings Settings, IReadOnlyCollection Output)> OctopusCreateRelease(MultiplexConfigure configurator)
+ {
+ return configurator(new OctopusCreateReleaseSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: OctopusCreateRelease(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
+ }
/// The Octo.exe deploy-release can be used to automate the deployment of releases to environments. This allows you to easily integrate Octopus with other continuous integration servers.
For more details, visit the official website.
- public static IReadOnlyCollection OctopusDeployRelease(Configure configurator = null)
+ public static IReadOnlyCollection OctopusDeployRelease(OctopusDeployReleaseSettings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new OctopusDeployReleaseSettings());
+ toolSettings = toolSettings ?? new OctopusDeployReleaseSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
+ /// The Octo.exe deploy-release can be used to automate the deployment of releases to environments. This allows you to easily integrate Octopus with other continuous integration servers.
For more details, visit the official website.
+ public static IReadOnlyCollection OctopusDeployRelease(Configure configurator)
+ {
+ return OctopusDeployRelease(configurator(new OctopusDeployReleaseSettings()));
+ }
+ /// The Octo.exe deploy-release can be used to automate the deployment of releases to environments. This allows you to easily integrate Octopus with other continuous integration servers.
For more details, visit the official website.
+ public static IEnumerable<(OctopusDeployReleaseSettings Settings, IReadOnlyCollection Output)> OctopusDeployRelease(MultiplexConfigure configurator)
+ {
+ return configurator(new OctopusDeployReleaseSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: OctopusDeployRelease(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
+ }
}
#region OctopusPackSettings
/// Used within .
diff --git a/source/Nuke.Common/Tools/OpenCover/OpenCover.Generated.cs b/source/Nuke.Common/Tools/OpenCover/OpenCover.Generated.cs
index f86c08624..6b9d1fca5 100644
--- a/source/Nuke.Common/Tools/OpenCover/OpenCover.Generated.cs
+++ b/source/Nuke.Common/Tools/OpenCover/OpenCover.Generated.cs
@@ -35,13 +35,25 @@ public static IReadOnlyCollection OpenCover(string arguments, string wor
return process.Output;
}
/// OpenCover is a code coverage tool for .NET 2 and above (Windows OSs only - no MONO), with support for 32 and 64 processes and covers both branch and sequence points.
For more details, visit the official website.
- public static IReadOnlyCollection OpenCover(Configure configurator = null)
+ public static IReadOnlyCollection OpenCover(OpenCoverSettings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new OpenCoverSettings());
+ toolSettings = toolSettings ?? new OpenCoverSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
+ /// OpenCover is a code coverage tool for .NET 2 and above (Windows OSs only - no MONO), with support for 32 and 64 processes and covers both branch and sequence points.
For more details, visit the official website.
+ public static IReadOnlyCollection OpenCover(Configure configurator)
+ {
+ return OpenCover(configurator(new OpenCoverSettings()));
+ }
+ /// OpenCover is a code coverage tool for .NET 2 and above (Windows OSs only - no MONO), with support for 32 and 64 processes and covers both branch and sequence points.
For more details, visit the official website.
+ public static IEnumerable<(OpenCoverSettings Settings, IReadOnlyCollection Output)> OpenCover(MultiplexConfigure configurator)
+ {
+ return configurator(new OpenCoverSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: OpenCover(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
+ }
}
#region OpenCoverSettings
/// Used within .
diff --git a/source/Nuke.Common/Tools/Paket/Paket.Generated.cs b/source/Nuke.Common/Tools/Paket/Paket.Generated.cs
index dfbe36d3c..042ebc1b7 100644
--- a/source/Nuke.Common/Tools/Paket/Paket.Generated.cs
+++ b/source/Nuke.Common/Tools/Paket/Paket.Generated.cs
@@ -35,37 +35,85 @@ public static IReadOnlyCollection Paket(string arguments, string working
return process.Output;
}
/// Paket is a dependency manager for .NET and mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from Git repositories or any HTTP resource. It enables precise and predictable control over what packages the projects within your application reference.
If you want to learn how to use Paket then read the Getting started tutorial and take a look at the FAQs.
If you are already using NuGet for package management in your solution then you can learn about the upgrade process in the convert from NuGet section.
For more details, visit the official website.
- public static IReadOnlyCollection PaketUpdate(Configure configurator = null)
+ public static IReadOnlyCollection PaketUpdate(PaketUpdateSettings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new PaketUpdateSettings());
+ toolSettings = toolSettings ?? new PaketUpdateSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
/// Paket is a dependency manager for .NET and mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from Git repositories or any HTTP resource. It enables precise and predictable control over what packages the projects within your application reference.
If you want to learn how to use Paket then read the Getting started tutorial and take a look at the FAQs.
If you are already using NuGet for package management in your solution then you can learn about the upgrade process in the convert from NuGet section.
For more details, visit the official website.
- public static IReadOnlyCollection PaketRestore(Configure configurator = null)
+ public static IReadOnlyCollection PaketUpdate(Configure configurator)
{
- var toolSettings = configurator.InvokeSafe(new PaketRestoreSettings());
+ return PaketUpdate(configurator(new PaketUpdateSettings()));
+ }
+ /// Paket is a dependency manager for .NET and mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from Git repositories or any HTTP resource. It enables precise and predictable control over what packages the projects within your application reference.
If you want to learn how to use Paket then read the Getting started tutorial and take a look at the FAQs.
If you are already using NuGet for package management in your solution then you can learn about the upgrade process in the convert from NuGet section.
For more details, visit the official website.
+ public static IEnumerable<(PaketUpdateSettings Settings, IReadOnlyCollection Output)> PaketUpdate(MultiplexConfigure configurator)
+ {
+ return configurator(new PaketUpdateSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: PaketUpdate(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
+ }
+ /// Paket is a dependency manager for .NET and mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from Git repositories or any HTTP resource. It enables precise and predictable control over what packages the projects within your application reference.
If you want to learn how to use Paket then read the Getting started tutorial and take a look at the FAQs.
If you are already using NuGet for package management in your solution then you can learn about the upgrade process in the convert from NuGet section.
For more details, visit the official website.
+ public static IReadOnlyCollection PaketRestore(PaketRestoreSettings toolSettings = null)
+ {
+ toolSettings = toolSettings ?? new PaketRestoreSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
/// Paket is a dependency manager for .NET and mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from Git repositories or any HTTP resource. It enables precise and predictable control over what packages the projects within your application reference.
If you want to learn how to use Paket then read the Getting started tutorial and take a look at the FAQs.
If you are already using NuGet for package management in your solution then you can learn about the upgrade process in the convert from NuGet section.
For more details, visit the official website.
- public static IReadOnlyCollection PaketPush(Configure configurator = null)
+ public static IReadOnlyCollection PaketRestore(Configure configurator)
+ {
+ return PaketRestore(configurator(new PaketRestoreSettings()));
+ }
+ /// Paket is a dependency manager for .NET and mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from Git repositories or any HTTP resource. It enables precise and predictable control over what packages the projects within your application reference.
If you want to learn how to use Paket then read the Getting started tutorial and take a look at the FAQs.
If you are already using NuGet for package management in your solution then you can learn about the upgrade process in the convert from NuGet section.
For more details, visit the official website.
+ public static IEnumerable<(PaketRestoreSettings Settings, IReadOnlyCollection Output)> PaketRestore(MultiplexConfigure configurator)
+ {
+ return configurator(new PaketRestoreSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: PaketRestore(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
+ }
+ /// Paket is a dependency manager for .NET and mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from Git repositories or any HTTP resource. It enables precise and predictable control over what packages the projects within your application reference.
If you want to learn how to use Paket then read the Getting started tutorial and take a look at the FAQs.
If you are already using NuGet for package management in your solution then you can learn about the upgrade process in the convert from NuGet section.
For more details, visit the official website.
+ public static IReadOnlyCollection PaketPush(PaketPushSettings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new PaketPushSettings());
+ toolSettings = toolSettings ?? new PaketPushSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
/// Paket is a dependency manager for .NET and mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from Git repositories or any HTTP resource. It enables precise and predictable control over what packages the projects within your application reference.
If you want to learn how to use Paket then read the Getting started tutorial and take a look at the FAQs.
If you are already using NuGet for package management in your solution then you can learn about the upgrade process in the convert from NuGet section.
For more details, visit the official website.
- public static IReadOnlyCollection PaketPack(Configure configurator = null)
+ public static IReadOnlyCollection PaketPush(Configure configurator)
{
- var toolSettings = configurator.InvokeSafe(new PaketPackSettings());
+ return PaketPush(configurator(new PaketPushSettings()));
+ }
+ /// Paket is a dependency manager for .NET and mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from Git repositories or any HTTP resource. It enables precise and predictable control over what packages the projects within your application reference.
If you want to learn how to use Paket then read the Getting started tutorial and take a look at the FAQs.
If you are already using NuGet for package management in your solution then you can learn about the upgrade process in the convert from NuGet section.
For more details, visit the official website.
+ public static IEnumerable<(PaketPushSettings Settings, IReadOnlyCollection Output)> PaketPush(MultiplexConfigure configurator)
+ {
+ return configurator(new PaketPushSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: PaketPush(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
+ }
+ /// Paket is a dependency manager for .NET and mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from Git repositories or any HTTP resource. It enables precise and predictable control over what packages the projects within your application reference.
If you want to learn how to use Paket then read the Getting started tutorial and take a look at the FAQs.
If you are already using NuGet for package management in your solution then you can learn about the upgrade process in the convert from NuGet section.
For more details, visit the official website.
+ public static IReadOnlyCollection PaketPack(PaketPackSettings toolSettings = null)
+ {
+ toolSettings = toolSettings ?? new PaketPackSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
+ /// Paket is a dependency manager for .NET and mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from Git repositories or any HTTP resource. It enables precise and predictable control over what packages the projects within your application reference.
If you want to learn how to use Paket then read the Getting started tutorial and take a look at the FAQs.
If you are already using NuGet for package management in your solution then you can learn about the upgrade process in the convert from NuGet section.
For more details, visit the official website.
+ public static IReadOnlyCollection PaketPack(Configure configurator)
+ {
+ return PaketPack(configurator(new PaketPackSettings()));
+ }
+ /// Paket is a dependency manager for .NET and mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from Git repositories or any HTTP resource. It enables precise and predictable control over what packages the projects within your application reference.
If you want to learn how to use Paket then read the Getting started tutorial and take a look at the FAQs.
If you are already using NuGet for package management in your solution then you can learn about the upgrade process in the convert from NuGet section.
For more details, visit the official website.
+ public static IEnumerable<(PaketPackSettings Settings, IReadOnlyCollection Output)> PaketPack(MultiplexConfigure configurator)
+ {
+ return configurator(new PaketPackSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: PaketPack(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
+ }
}
#region PaketUpdateSettings
/// Used within .
diff --git a/source/Nuke.Common/Tools/ReportGenerator/ReportGenerator.Generated.cs b/source/Nuke.Common/Tools/ReportGenerator/ReportGenerator.Generated.cs
index af03288e4..6eca2ff3c 100644
--- a/source/Nuke.Common/Tools/ReportGenerator/ReportGenerator.Generated.cs
+++ b/source/Nuke.Common/Tools/ReportGenerator/ReportGenerator.Generated.cs
@@ -35,13 +35,25 @@ public static IReadOnlyCollection ReportGenerator(string arguments, stri
return process.Output;
}
/// ReportGenerator converts XML reports generated by OpenCover, PartCover, dotCover, Visual Studio, NCover or Cobertura into human readable reports in various formats.
The reports do not only show the coverage quota, but also include the source code and visualize which lines have been covered.
ReportGenerator supports merging several reports into one. It is also possible to pass one XML file containing several reports to ReportGenerator (e.g. a build log file).
The following output formats are supported by ReportGenerator:
- HTML, HTMLSummary, HTMLInline, HTMLChart, MHTML
- XML, XMLSummary
- Latex, LatexSummary
- TextSummary
- CsvSummary
- PngChart
- Badges
- Custom reports
Compatibility:
For more details, visit the official website.
- public static IReadOnlyCollection ReportGenerator(Configure configurator = null)
+ public static IReadOnlyCollection ReportGenerator(ReportGeneratorSettings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new ReportGeneratorSettings());
+ toolSettings = toolSettings ?? new ReportGeneratorSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
+ /// ReportGenerator converts XML reports generated by OpenCover, PartCover, dotCover, Visual Studio, NCover or Cobertura into human readable reports in various formats.
The reports do not only show the coverage quota, but also include the source code and visualize which lines have been covered.
ReportGenerator supports merging several reports into one. It is also possible to pass one XML file containing several reports to ReportGenerator (e.g. a build log file).
The following output formats are supported by ReportGenerator:
- HTML, HTMLSummary, HTMLInline, HTMLChart, MHTML
- XML, XMLSummary
- Latex, LatexSummary
- TextSummary
- CsvSummary
- PngChart
- Badges
- Custom reports
Compatibility:
For more details, visit the official website.
+ public static IReadOnlyCollection ReportGenerator(Configure configurator)
+ {
+ return ReportGenerator(configurator(new ReportGeneratorSettings()));
+ }
+ /// ReportGenerator converts XML reports generated by OpenCover, PartCover, dotCover, Visual Studio, NCover or Cobertura into human readable reports in various formats.
The reports do not only show the coverage quota, but also include the source code and visualize which lines have been covered.
ReportGenerator supports merging several reports into one. It is also possible to pass one XML file containing several reports to ReportGenerator (e.g. a build log file).
The following output formats are supported by ReportGenerator:
- HTML, HTMLSummary, HTMLInline, HTMLChart, MHTML
- XML, XMLSummary
- Latex, LatexSummary
- TextSummary
- CsvSummary
- PngChart
- Badges
- Custom reports
Compatibility:
For more details, visit the official website.
+ public static IEnumerable<(ReportGeneratorSettings Settings, IReadOnlyCollection Output)> ReportGenerator(MultiplexConfigure configurator)
+ {
+ return configurator(new ReportGeneratorSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: ReportGenerator(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
+ }
}
#region ReportGeneratorSettings
/// Used within .
diff --git a/source/Nuke.Common/Tools/SignTool/SignTool.Generated.cs b/source/Nuke.Common/Tools/SignTool/SignTool.Generated.cs
index c57d0ddcc..0c9e7aa46 100644
--- a/source/Nuke.Common/Tools/SignTool/SignTool.Generated.cs
+++ b/source/Nuke.Common/Tools/SignTool/SignTool.Generated.cs
@@ -35,13 +35,25 @@ public static IReadOnlyCollection SignTool(string arguments, string work
return process.Output;
}
/// Use the sign command to sign files using embedded signatures. Signing protects a file from tampering, and allows users to verify the signer (you) based on a signing certificate. The options below allow you to specify signing parameters and to select the signing certificate you wish to use.
For more details, visit the official website.
- public static IReadOnlyCollection SignTool(Configure configurator = null)
+ public static IReadOnlyCollection SignTool(SignToolSettings toolSettings = null)
{
- var toolSettings = configurator.InvokeSafe(new SignToolSettings());
+ toolSettings = toolSettings ?? new SignToolSettings();
var process = ProcessTasks.StartProcess(toolSettings);
process.AssertZeroExitCode();
return process.Output;
}
+ /// Use the sign command to sign files using embedded signatures. Signing protects a file from tampering, and allows users to verify the signer (you) based on a signing certificate. The options below allow you to specify signing parameters and to select the signing certificate you wish to use.
For more details, visit the official website.
+ public static IReadOnlyCollection SignTool(Configure configurator)
+ {
+ return SignTool(configurator(new SignToolSettings()));
+ }
+ /// Use the sign command to sign files using embedded signatures. Signing protects a file from tampering, and allows users to verify the signer (you) based on a signing certificate. The options below allow you to specify signing parameters and to select the signing certificate you wish to use.
For more details, visit the official website.
+ public static IEnumerable<(SignToolSettings Settings, IReadOnlyCollection Output)> SignTool(MultiplexConfigure configurator)
+ {
+ return configurator(new SignToolSettings())
+ .Select(x => (ToolSettings: x, ReturnValue: SignTool(x)))
+ .Select(x => (x.ToolSettings, x.ReturnValue)).ToList();
+ }
}
#region SignToolSettings
///