mirror of
https://github.com/nsnail/spectre.console.git
synced 2025-04-16 17:02:51 +08:00

Also moves tests to `./test` which makes it possible for all test projects to share the same .editorconfig files and similar.
50 lines
1.6 KiB
C#
50 lines
1.6 KiB
C#
using System;
|
|
using System.Linq;
|
|
using Spectre.Console.Cli;
|
|
using SystemConsole = System.Console;
|
|
|
|
namespace Spectre.Console.Tests.Data
|
|
{
|
|
public abstract class AnimalCommand<TSettings> : Command<TSettings>
|
|
where TSettings : CommandSettings
|
|
{
|
|
protected void DumpSettings(CommandContext context, TSettings settings)
|
|
{
|
|
if (context == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(context));
|
|
}
|
|
|
|
if (settings == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(settings));
|
|
}
|
|
|
|
var properties = settings.GetType().GetProperties();
|
|
foreach (var group in properties.GroupBy(x => x.DeclaringType).Reverse())
|
|
{
|
|
SystemConsole.WriteLine();
|
|
SystemConsole.ForegroundColor = ConsoleColor.Yellow;
|
|
SystemConsole.WriteLine(group.Key.FullName);
|
|
SystemConsole.ResetColor();
|
|
|
|
foreach (var property in group)
|
|
{
|
|
SystemConsole.WriteLine($" {property.Name} = {property.GetValue(settings)}");
|
|
}
|
|
}
|
|
|
|
if (context.Remaining.Raw.Count > 0)
|
|
{
|
|
SystemConsole.WriteLine();
|
|
SystemConsole.ForegroundColor = ConsoleColor.Yellow;
|
|
SystemConsole.WriteLine("Remaining:");
|
|
SystemConsole.ResetColor();
|
|
SystemConsole.WriteLine(string.Join(", ", context.Remaining));
|
|
}
|
|
|
|
SystemConsole.WriteLine();
|
|
}
|
|
}
|
|
}
|