From 93668e92b6c7ee06d2c3340cf3e212527ac67f1b Mon Sep 17 00:00:00 2001 From: Melvin Dommer <31562317+byte2pixel@users.noreply.github.com> Date: Mon, 24 Feb 2025 14:57:23 -0600 Subject: [PATCH] Changed IConfigurator to return IConfigurator instead of void for (#1762) --- src/Spectre.Console.Cli/IConfigurator.cs | 9 ++++--- .../Internal/Configuration/Configurator.cs | 9 ++++--- .../Unit/CommandAppTests.Help.cs | 27 +++++++++---------- 3 files changed, 25 insertions(+), 20 deletions(-) diff --git a/src/Spectre.Console.Cli/IConfigurator.cs b/src/Spectre.Console.Cli/IConfigurator.cs index ccac8d0..4e55ce3 100644 --- a/src/Spectre.Console.Cli/IConfigurator.cs +++ b/src/Spectre.Console.Cli/IConfigurator.cs @@ -9,13 +9,15 @@ public interface IConfigurator /// Sets the help provider for the application. /// /// The help provider to use. - public void SetHelpProvider(IHelpProvider helpProvider); + /// A configurator that can be used for further configuration. + public IConfigurator SetHelpProvider(IHelpProvider helpProvider); /// /// Sets the help provider for the application. /// /// The type of the help provider to instantiate at runtime and use. - public void SetHelpProvider() + /// A configurator that can be used for further configuration. + public IConfigurator SetHelpProvider() where T : IHelpProvider; /// @@ -27,7 +29,8 @@ public interface IConfigurator /// Adds an example of how to use the application. /// /// The example arguments. - void AddExample(params string[] args); + /// A configurator that can be used for further configuration. + IConfigurator AddExample(params string[] args); /// /// Adds a command. diff --git a/src/Spectre.Console.Cli/Internal/Configuration/Configurator.cs b/src/Spectre.Console.Cli/Internal/Configuration/Configurator.cs index 0bb22c8..5f2d20a 100644 --- a/src/Spectre.Console.Cli/Internal/Configuration/Configurator.cs +++ b/src/Spectre.Console.Cli/Internal/Configuration/Configurator.cs @@ -20,22 +20,25 @@ internal sealed class Configurator : IUnsafeConfigurator, IConfigurator, IConfig Examples = new List(); } - public void SetHelpProvider(IHelpProvider helpProvider) + public IConfigurator SetHelpProvider(IHelpProvider helpProvider) { // Register the help provider _registrar.RegisterInstance(typeof(IHelpProvider), helpProvider); + return this; } - public void SetHelpProvider() + public IConfigurator SetHelpProvider() where T : IHelpProvider { // Register the help provider _registrar.Register(typeof(IHelpProvider), typeof(T)); + return this; } - public void AddExample(params string[] args) + public IConfigurator AddExample(params string[] args) { Examples.Add(args); + return this; } public ConfiguredCommand SetDefaultCommand() diff --git a/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Help.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Help.cs index 076f07b..94fa8ab 100644 --- a/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Help.cs +++ b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Help.cs @@ -348,10 +348,10 @@ public sealed partial class CommandAppTests fixture.SetDefaultCommand(); fixture.Configure(configurator => { - configurator.SetApplicationName("myapp"); - configurator.AddExample("20", "--alive"); - configurator.AddCommand("giraffe"); - configurator.SetHelpProvider(new RenderMarkupHelpProvider(configurator.Settings)); + configurator.SetApplicationName("myapp") + .SetHelpProvider(new RenderMarkupHelpProvider(configurator.Settings)) + .AddExample("20", "--alive") + .AddCommand("giraffe"); }); // When @@ -539,10 +539,9 @@ public sealed partial class CommandAppTests fixture.Configure(configurator => { // Configure the custom help provider type - configurator.SetHelpProvider(); - - configurator.SetApplicationName("myapp"); - configurator.AddCommand("dog"); + configurator.SetHelpProvider() + .SetApplicationName("myapp") + .AddCommand("dog"); }); // When @@ -952,12 +951,12 @@ public sealed partial class CommandAppTests configurator.SetApplicationName("myapp"); // All root examples should be shown - configurator.AddExample("--name", "Rufus", "--age", "12", "--good-boy"); - configurator.AddExample("--name", "Luna"); - configurator.AddExample("--name", "Charlie"); - configurator.AddExample("--name", "Bella"); - configurator.AddExample("--name", "Daisy"); - configurator.AddExample("--name", "Milo"); + configurator.AddExample("--name", "Rufus", "--age", "12", "--good-boy") + .AddExample("--name", "Luna") + .AddExample("--name", "Charlie") + .AddExample("--name", "Bella") + .AddExample("--name", "Daisy") + .AddExample("--name", "Milo"); }); // When