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