Skip to content

Commit

Permalink
Allow setting ProcessCustomLogger in ToolSettings (#1069)
Browse files Browse the repository at this point in the history
  • Loading branch information
Baune8D authored and matkoch committed Dec 12, 2022
1 parent cbd986d commit 11d21fc
Show file tree
Hide file tree
Showing 11 changed files with 22 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ private static DataClassWriter WriteProcessCustomLogger(this DataClassWriter wri

var tool = writer.DataClass.Tool;
var logger = $"{tool.GetClassName()}.{tool.Name}Logger";
return writer.WriteLine($"public override Action<OutputType, string> ProcessCustomLogger => {logger};");
return writer.WriteLine($"public override Action<OutputType, string> ProcessCustomLogger => base.ProcessCustomLogger ?? {logger};");
}

private static void WritePropertyDeclaration(DataClassWriter writer, Property property)
Expand Down
5 changes: 3 additions & 2 deletions source/Nuke.CodeGeneration/Generators/TaskGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ private static void WriteGenericTask(this ToolWriter writer)
"int? timeout = null",
"bool? logOutput = null",
"bool? logInvocation = null",
"Func<string, string> outputFilter = null"
"Func<string, string> outputFilter = null",
"Action<OutputType, string> customLogger = null"
};
var arguments = new[]
{
Expand All @@ -62,7 +63,7 @@ private static void WriteGenericTask(this ToolWriter writer)
"timeout",
"logOutput",
"logInvocation",
$"{tool.Name}Logger",
$"customLogger ?? {tool.Name}Logger",
"outputFilter"
};
writer
Expand Down
10 changes: 10 additions & 0 deletions source/Nuke.Common/Tooling/ToolSettings.Standard.cs
Original file line number Diff line number Diff line change
Expand Up @@ -164,5 +164,15 @@ public static T SetProcessArgumentConfigurator<T>(this T toolSettings, [CanBeNul
newToolSettings.ProcessArgumentConfigurator = argumentConfigurator;
return newToolSettings;
}

///<summary>Sets <see cref="ToolSettings.ProcessCustomLogger"/> -- <inheritdoc cref="ToolSettings.ProcessCustomLogger" /></summary>
[Pure]
public static T SetProcessCustomLogger<T>(this T toolSettings, [CanBeNull] Action<OutputType, string> customLogger)
where T : ToolSettings
{
var newToolSettings = toolSettings.NewInstance();
newToolSettings.ProcessCustomLogger = customLogger;
return newToolSettings;
}
}
}
2 changes: 1 addition & 1 deletion source/Nuke.Common/Tooling/ToolSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ protected ToolSettings()
public bool? ProcessLogOutput { get; internal set; }
public bool? ProcessLogInvocation { get; internal set; }

public abstract Action<OutputType, string> ProcessCustomLogger { get; }
public virtual Action<OutputType, string> ProcessCustomLogger { get; internal set; }

[NonSerialized]
private Func<Arguments, Arguments> _processArgumentConfigurator = x => x;
Expand Down
2 changes: 1 addition & 1 deletion source/Nuke.Common/Tools/Docker/CliSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,6 @@ public Arguments CreateArguments()
return ConfigureProcessArguments(new Arguments());
}

public override Action<OutputType, string> ProcessCustomLogger => throw new NotSupportedException();
public override Action<OutputType, string> ProcessCustomLogger => base.ProcessCustomLogger ?? throw new NotSupportedException();
}
}
2 changes: 1 addition & 1 deletion source/Nuke.Common/Tools/Helm/HelmCommonSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,6 @@ internal Arguments CreateArguments()
return ConfigureProcessArguments(new Arguments());
}

public override Action<OutputType, string> ProcessCustomLogger { get; }
public override Action<OutputType, string> ProcessCustomLogger { get; internal set; }
}
}
2 changes: 1 addition & 1 deletion source/Nuke.Common/Tools/Helm/HelmToolSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public class HelmToolSettings : ToolSettings
/// </summary>
public HelmCommonSettings CommonSettings { get; internal set; }

public override Action<OutputType, string> ProcessCustomLogger { get; }
public override Action<OutputType, string> ProcessCustomLogger { get; internal set; }

protected override Arguments ConfigureProcessArguments([NotNull] Arguments arguments)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,6 @@ internal Arguments CreateArguments()
return ConfigureProcessArguments(new Arguments());
}

public override Action<OutputType, string> ProcessCustomLogger { get; }
public override Action<OutputType, string> ProcessCustomLogger { get; internal set; }
}
}
2 changes: 1 addition & 1 deletion source/Nuke.Common/Tools/NSwag/NSwagSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public class NSwagSettings : ToolSettings

private bool IsNetCore => NSwagRuntime != null && NSwagRuntime.StartsWith("Net", StringComparison.OrdinalIgnoreCase);

public override Action<OutputType, string> ProcessCustomLogger { get; }
public override Action<OutputType, string> ProcessCustomLogger { get; internal set; }

[NotNull]
protected override Arguments ConfigureProcessArguments([NotNull] Arguments arguments)
Expand Down
2 changes: 1 addition & 1 deletion source/Nuke.Common/Tools/ReSharper/ReSharperTasks.cs
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,6 @@ private static string GetShadowDirectory(ReSharperSettingsBase toolSettings, str

partial class ReSharperSettingsBase
{
public override Action<OutputType, string> ProcessCustomLogger => ProcessTasks.DefaultLogger;
public override Action<OutputType, string> ProcessCustomLogger => base.ProcessCustomLogger ?? ProcessTasks.DefaultLogger;
}
}
2 changes: 1 addition & 1 deletion source/Nuke.Common/Tools/Unity/UnityBaseSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ namespace Nuke.Common.Tools.Unity
{
public partial class UnityBaseSettings
{
public override Action<OutputType, string> ProcessCustomLogger => UnityTasks.UnityLogger;
public override Action<OutputType, string> ProcessCustomLogger => base.ProcessCustomLogger ?? UnityTasks.UnityLogger;

public string GetProcessToolPath()
{
Expand Down

0 comments on commit 11d21fc

Please sign in to comment.