From e1852d7c98c0c536ed7c423170df9f267ce4ffda Mon Sep 17 00:00:00 2001 From: Mattias Karlsson Date: Wed, 4 Mar 2026 00:26:03 +0100 Subject: [PATCH] (GH-91) Add config to skip CakeReportPrinter - Add --no-report CLI option and NoReport to CakeAppSettings - Pass NoReport into ToCakeArguments in AddCakeCli registration - In GeneratorScriptHost, read Settings_NoReport and skip report output when enabled (normal and CakeReportException paths) - Update Cake.Generator.TestApp to net10.0 - fixes #91 --- ...rTests.RunGenerators#CakeCakeAppSettings.g.verified.cs | 4 ++++ ...ests.RunGenerators#CakeHelper.AddCakeCli.g.verified.cs | 2 +- ...eratorTests.RunGenerators#CakeScriptHost.g.verified.cs | 8 +++++--- ...ratesMainMethodCalls#CakeCakeAppSettings.g.verified.cs | 4 ++++ ...tesMainMethodCalls#CakeHelper.AddCakeCli.g.verified.cs | 2 +- ..._GeneratesMainMethodCalls#CakeScriptHost.g.verified.cs | 8 +++++--- ...nerators_WithModules#CakeCakeAppSettings.g.verified.cs | 4 ++++ ...rators_WithModules#CakeHelper.AddCakeCli.g.verified.cs | 2 +- ...RunGenerators_WithModules#CakeScriptHost.g.verified.cs | 8 +++++--- .../CakeGenerator.Generate.CakeAppSettings.cs | 4 ++++ .../CakeGenerator.Generate.Helper.Services.AddCakeCli.cs | 2 +- .../CakeGenerator.Generate.ScriptHost.cs | 8 +++++--- src/Cake.Generator.TestApp/Cake.Generator.TestApp.csproj | 2 +- 13 files changed, 41 insertions(+), 17 deletions(-) diff --git a/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators#CakeCakeAppSettings.g.verified.cs b/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators#CakeCakeAppSettings.g.verified.cs index 1b2d6ba..e9605aa 100644 --- a/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators#CakeCakeAppSettings.g.verified.cs +++ b/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators#CakeCakeAppSettings.g.verified.cs @@ -42,4 +42,8 @@ internal sealed class CakeAppSettings : Spectre.Console.Cli.CommandSettings [CommandOption("--info")] [Description("Displays additional information about Cake.")] public bool Info { get; set; } + + [CommandOption("--no-report")] + [Description("Prevent the display of the summary report at the end of Cake Execution.")] + public bool NoReport { get; set; } } \ No newline at end of file diff --git a/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators#CakeHelper.AddCakeCli.g.verified.cs b/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators#CakeHelper.AddCakeCli.g.verified.cs index b05e372..6d4076c 100644 --- a/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators#CakeHelper.AddCakeCli.g.verified.cs +++ b/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators#CakeHelper.AddCakeCli.g.verified.cs @@ -46,7 +46,7 @@ IServiceCollection services services.AddSingleton(interceptor.CakeAppSettings); services.AddSingleton(provider => provider.GetRequiredService()); - var arguments = global::Cake.Cli.Infrastructure.IRemainingArgumentsExtensions.ToCakeArguments(ToUnQuotedRemainingArguments(interceptor.Context.Remaining), interceptor.CakeAppSettings.Targets); + var arguments = global::Cake.Cli.Infrastructure.IRemainingArgumentsExtensions.ToCakeArguments(ToUnQuotedRemainingArguments(interceptor.Context.Remaining), interceptor.CakeAppSettings.NoReport, interceptor.CakeAppSettings.Targets); services.AddSingleton(arguments); services.AddSingleton(arguments); diff --git a/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators#CakeScriptHost.g.verified.cs b/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators#CakeScriptHost.g.verified.cs index 8ec99fb..9b9e9d9 100644 --- a/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators#CakeScriptHost.g.verified.cs +++ b/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators#CakeScriptHost.g.verified.cs @@ -39,7 +39,7 @@ private static void PostScriptHost() } } - private class GeneratorScriptHost(ICakeEngine engine, ICakeContext context, IExecutionStrategy strategy, ICakeReportPrinter reporter) + private class GeneratorScriptHost(ICakeEngine engine, ICakeContext context, IExecutionStrategy strategy, ICakeConfiguration configuration, ICakeReportPrinter reporter) : ScriptHost(engine, context) { @@ -59,13 +59,15 @@ public override async Task RunTargetsAsync(IEnumerable targe private async Task internalRunTargetAsync() { + bool noReportEnabled = false; try { + noReportEnabled = bool.TrueString.Equals(configuration.GetValue("Settings_NoReport") ?? bool.FalseString, StringComparison.OrdinalIgnoreCase); var report = await Engine .RunTargetAsync(Context, strategy, Settings) .ConfigureAwait(false); - if (report != null && !report.IsEmpty) + if (report != null && !report.IsEmpty && !noReportEnabled) { reporter.Write(report); } @@ -76,7 +78,7 @@ private async Task internalRunTargetAsync() } catch (CakeReportException cre) { - if (cre.Report != null && !cre.Report.IsEmpty) + if (cre.Report != null && !cre.Report.IsEmpty && !noReportEnabled) { reporter.Write(cre.Report); } diff --git a/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators_WithMainMethods_GeneratesMainMethodCalls#CakeCakeAppSettings.g.verified.cs b/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators_WithMainMethods_GeneratesMainMethodCalls#CakeCakeAppSettings.g.verified.cs index 1b2d6ba..e9605aa 100644 --- a/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators_WithMainMethods_GeneratesMainMethodCalls#CakeCakeAppSettings.g.verified.cs +++ b/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators_WithMainMethods_GeneratesMainMethodCalls#CakeCakeAppSettings.g.verified.cs @@ -42,4 +42,8 @@ internal sealed class CakeAppSettings : Spectre.Console.Cli.CommandSettings [CommandOption("--info")] [Description("Displays additional information about Cake.")] public bool Info { get; set; } + + [CommandOption("--no-report")] + [Description("Prevent the display of the summary report at the end of Cake Execution.")] + public bool NoReport { get; set; } } \ No newline at end of file diff --git a/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators_WithMainMethods_GeneratesMainMethodCalls#CakeHelper.AddCakeCli.g.verified.cs b/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators_WithMainMethods_GeneratesMainMethodCalls#CakeHelper.AddCakeCli.g.verified.cs index b05e372..6d4076c 100644 --- a/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators_WithMainMethods_GeneratesMainMethodCalls#CakeHelper.AddCakeCli.g.verified.cs +++ b/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators_WithMainMethods_GeneratesMainMethodCalls#CakeHelper.AddCakeCli.g.verified.cs @@ -46,7 +46,7 @@ IServiceCollection services services.AddSingleton(interceptor.CakeAppSettings); services.AddSingleton(provider => provider.GetRequiredService()); - var arguments = global::Cake.Cli.Infrastructure.IRemainingArgumentsExtensions.ToCakeArguments(ToUnQuotedRemainingArguments(interceptor.Context.Remaining), interceptor.CakeAppSettings.Targets); + var arguments = global::Cake.Cli.Infrastructure.IRemainingArgumentsExtensions.ToCakeArguments(ToUnQuotedRemainingArguments(interceptor.Context.Remaining), interceptor.CakeAppSettings.NoReport, interceptor.CakeAppSettings.Targets); services.AddSingleton(arguments); services.AddSingleton(arguments); diff --git a/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators_WithMainMethods_GeneratesMainMethodCalls#CakeScriptHost.g.verified.cs b/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators_WithMainMethods_GeneratesMainMethodCalls#CakeScriptHost.g.verified.cs index cf23a1a..354d797 100644 --- a/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators_WithMainMethods_GeneratesMainMethodCalls#CakeScriptHost.g.verified.cs +++ b/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators_WithMainMethods_GeneratesMainMethodCalls#CakeScriptHost.g.verified.cs @@ -40,7 +40,7 @@ private static void PostScriptHost() } } - private class GeneratorScriptHost(ICakeEngine engine, ICakeContext context, IExecutionStrategy strategy, ICakeReportPrinter reporter) + private class GeneratorScriptHost(ICakeEngine engine, ICakeContext context, IExecutionStrategy strategy, ICakeConfiguration configuration, ICakeReportPrinter reporter) : ScriptHost(engine, context) { @@ -60,13 +60,15 @@ public override async Task RunTargetsAsync(IEnumerable targe private async Task internalRunTargetAsync() { + bool noReportEnabled = false; try { + noReportEnabled = bool.TrueString.Equals(configuration.GetValue("Settings_NoReport") ?? bool.FalseString, StringComparison.OrdinalIgnoreCase); var report = await Engine .RunTargetAsync(Context, strategy, Settings) .ConfigureAwait(false); - if (report != null && !report.IsEmpty) + if (report != null && !report.IsEmpty && !noReportEnabled) { reporter.Write(report); } @@ -77,7 +79,7 @@ private async Task internalRunTargetAsync() } catch (CakeReportException cre) { - if (cre.Report != null && !cre.Report.IsEmpty) + if (cre.Report != null && !cre.Report.IsEmpty && !noReportEnabled) { reporter.Write(cre.Report); } diff --git a/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators_WithModules#CakeCakeAppSettings.g.verified.cs b/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators_WithModules#CakeCakeAppSettings.g.verified.cs index 1b2d6ba..e9605aa 100644 --- a/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators_WithModules#CakeCakeAppSettings.g.verified.cs +++ b/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators_WithModules#CakeCakeAppSettings.g.verified.cs @@ -42,4 +42,8 @@ internal sealed class CakeAppSettings : Spectre.Console.Cli.CommandSettings [CommandOption("--info")] [Description("Displays additional information about Cake.")] public bool Info { get; set; } + + [CommandOption("--no-report")] + [Description("Prevent the display of the summary report at the end of Cake Execution.")] + public bool NoReport { get; set; } } \ No newline at end of file diff --git a/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators_WithModules#CakeHelper.AddCakeCli.g.verified.cs b/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators_WithModules#CakeHelper.AddCakeCli.g.verified.cs index b05e372..6d4076c 100644 --- a/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators_WithModules#CakeHelper.AddCakeCli.g.verified.cs +++ b/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators_WithModules#CakeHelper.AddCakeCli.g.verified.cs @@ -46,7 +46,7 @@ IServiceCollection services services.AddSingleton(interceptor.CakeAppSettings); services.AddSingleton(provider => provider.GetRequiredService()); - var arguments = global::Cake.Cli.Infrastructure.IRemainingArgumentsExtensions.ToCakeArguments(ToUnQuotedRemainingArguments(interceptor.Context.Remaining), interceptor.CakeAppSettings.Targets); + var arguments = global::Cake.Cli.Infrastructure.IRemainingArgumentsExtensions.ToCakeArguments(ToUnQuotedRemainingArguments(interceptor.Context.Remaining), interceptor.CakeAppSettings.NoReport, interceptor.CakeAppSettings.Targets); services.AddSingleton(arguments); services.AddSingleton(arguments); diff --git a/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators_WithModules#CakeScriptHost.g.verified.cs b/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators_WithModules#CakeScriptHost.g.verified.cs index 8ec99fb..9b9e9d9 100644 --- a/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators_WithModules#CakeScriptHost.g.verified.cs +++ b/src/Cake.Generator.Core.Tests/Unit/CakeGeneratorTests.RunGenerators_WithModules#CakeScriptHost.g.verified.cs @@ -39,7 +39,7 @@ private static void PostScriptHost() } } - private class GeneratorScriptHost(ICakeEngine engine, ICakeContext context, IExecutionStrategy strategy, ICakeReportPrinter reporter) + private class GeneratorScriptHost(ICakeEngine engine, ICakeContext context, IExecutionStrategy strategy, ICakeConfiguration configuration, ICakeReportPrinter reporter) : ScriptHost(engine, context) { @@ -59,13 +59,15 @@ public override async Task RunTargetsAsync(IEnumerable targe private async Task internalRunTargetAsync() { + bool noReportEnabled = false; try { + noReportEnabled = bool.TrueString.Equals(configuration.GetValue("Settings_NoReport") ?? bool.FalseString, StringComparison.OrdinalIgnoreCase); var report = await Engine .RunTargetAsync(Context, strategy, Settings) .ConfigureAwait(false); - if (report != null && !report.IsEmpty) + if (report != null && !report.IsEmpty && !noReportEnabled) { reporter.Write(report); } @@ -76,7 +78,7 @@ private async Task internalRunTargetAsync() } catch (CakeReportException cre) { - if (cre.Report != null && !cre.Report.IsEmpty) + if (cre.Report != null && !cre.Report.IsEmpty && !noReportEnabled) { reporter.Write(cre.Report); } diff --git a/src/Cake.Generator.Core/CakeGenerator.Generate.CakeAppSettings.cs b/src/Cake.Generator.Core/CakeGenerator.Generate.CakeAppSettings.cs index b17a857..84c8756 100644 --- a/src/Cake.Generator.Core/CakeGenerator.Generate.CakeAppSettings.cs +++ b/src/Cake.Generator.Core/CakeGenerator.Generate.CakeAppSettings.cs @@ -52,6 +52,10 @@ internal sealed class CakeAppSettings : Spectre.Console.Cli.CommandSettings [CommandOption("--info")] [Description("Displays additional information about Cake.")] public bool Info { get; set; } + + [CommandOption("--no-report")] + [Description("Prevent the display of the summary report at the end of Cake Execution.")] + public bool NoReport { get; set; } } """; } \ No newline at end of file diff --git a/src/Cake.Generator.Core/CakeGenerator.Generate.Helper.Services.AddCakeCli.cs b/src/Cake.Generator.Core/CakeGenerator.Generate.Helper.Services.AddCakeCli.cs index 6d1a381..ca29f90 100644 --- a/src/Cake.Generator.Core/CakeGenerator.Generate.Helper.Services.AddCakeCli.cs +++ b/src/Cake.Generator.Core/CakeGenerator.Generate.Helper.Services.AddCakeCli.cs @@ -59,7 +59,7 @@ IServiceCollection services services.AddSingleton(interceptor.CakeAppSettings); services.AddSingleton(provider => provider.GetRequiredService()); - var arguments = global::Cake.Cli.Infrastructure.IRemainingArgumentsExtensions.ToCakeArguments(ToUnQuotedRemainingArguments(interceptor.Context.Remaining), interceptor.CakeAppSettings.Targets); + var arguments = global::Cake.Cli.Infrastructure.IRemainingArgumentsExtensions.ToCakeArguments(ToUnQuotedRemainingArguments(interceptor.Context.Remaining), interceptor.CakeAppSettings.NoReport, interceptor.CakeAppSettings.Targets); services.AddSingleton(arguments); services.AddSingleton(arguments); diff --git a/src/Cake.Generator.Core/CakeGenerator.Generate.ScriptHost.cs b/src/Cake.Generator.Core/CakeGenerator.Generate.ScriptHost.cs index c77c43e..8dcb0f6 100644 --- a/src/Cake.Generator.Core/CakeGenerator.Generate.ScriptHost.cs +++ b/src/Cake.Generator.Core/CakeGenerator.Generate.ScriptHost.cs @@ -69,7 +69,7 @@ private static void PostScriptHost() } } - private class GeneratorScriptHost(ICakeEngine engine, ICakeContext context, IExecutionStrategy strategy, ICakeReportPrinter reporter) + private class GeneratorScriptHost(ICakeEngine engine, ICakeContext context, IExecutionStrategy strategy, ICakeConfiguration configuration, ICakeReportPrinter reporter) : ScriptHost(engine, context) { @@ -89,13 +89,15 @@ public override async Task RunTargetsAsync(IEnumerable targe private async Task internalRunTargetAsync() { + bool noReportEnabled = false; try { + noReportEnabled = bool.TrueString.Equals(configuration.GetValue("Settings_NoReport") ?? bool.FalseString, StringComparison.OrdinalIgnoreCase); var report = await Engine .RunTargetAsync(Context, strategy, Settings) .ConfigureAwait(false); - if (report != null && !report.IsEmpty) + if (report != null && !report.IsEmpty && !noReportEnabled) { reporter.Write(report); } @@ -106,7 +108,7 @@ private async Task internalRunTargetAsync() } catch (CakeReportException cre) { - if (cre.Report != null && !cre.Report.IsEmpty) + if (cre.Report != null && !cre.Report.IsEmpty && !noReportEnabled) { reporter.Write(cre.Report); } diff --git a/src/Cake.Generator.TestApp/Cake.Generator.TestApp.csproj b/src/Cake.Generator.TestApp/Cake.Generator.TestApp.csproj index c99d242..dfcbaba 100644 --- a/src/Cake.Generator.TestApp/Cake.Generator.TestApp.csproj +++ b/src/Cake.Generator.TestApp/Cake.Generator.TestApp.csproj @@ -2,7 +2,7 @@ Exe - net9.0 + net10.0 enable enable false