Revert help text changes in the command section

Not happy with how it looks right now. Confusing to the user.
This commit is contained in:
Tyrrrz
2020-12-06 18:24:30 +02:00
parent 18f53eeeef
commit 4acffe925c
2 changed files with 38 additions and 22 deletions

View File

@@ -65,7 +65,7 @@ namespace CliFx.Tests
}
[Fact]
public async Task Help_text_shows_commands_list_with_description_and_usage_info()
public async Task Help_text_shows_usage_format_which_lists_available_sub_commands()
{
// Arrange
var (console, stdOut, _) = VirtualConsole.CreateBuffered();
@@ -78,16 +78,14 @@ namespace CliFx.Tests
.Build();
// Act
var exitCode = await application.RunAsync(new[] { "--help" });
var exitCode = await application.RunAsync(new[] {"--help"});
// Assert
exitCode.Should().Be(0);
stdOut.GetString().Should().ContainAll(
"Commands",
"Named command description",
"named [options]",
"Named sub command description",
"named sub [options]"
"Usage",
"... named",
"... named sub"
);
_output.WriteLine(stdOut.GetString());

View File

@@ -169,6 +169,19 @@ namespace CliFx.Domain
// Current command usage
WriteCommandUsageLineItem(command, childCommands.Any());
// Sub commands usage
if (childCommands.Any())
{
WriteVerticalMargin();
foreach (var childCommand in childCommands)
{
WriteHorizontalMargin();
Write("... ");
WriteCommandUsageLineItem(childCommand, false);
}
}
}
private void WriteCommandParameters(CommandSchema command)
@@ -283,11 +296,11 @@ namespace CliFx.Domain
}
}
private void WriteCommandDescendants(
private void WriteCommandChildren(
CommandSchema command,
IReadOnlyList<CommandSchema> descendantCommands)
IReadOnlyList<CommandSchema> childCommands)
{
if (!descendantCommands.Any())
if (!childCommands.Any())
return;
if (!IsEmpty)
@@ -295,24 +308,28 @@ namespace CliFx.Domain
WriteHeader("Commands");
foreach (var descendantCommand in descendantCommands)
foreach (var childCommand in childCommands)
{
// Description
if (!string.IsNullOrWhiteSpace(descendantCommand.Description))
{
WriteHorizontalMargin();
Write(descendantCommand.Description);
WriteVerticalMargin();
}
var relativeCommandName = !string.IsNullOrWhiteSpace(command.Name)
? childCommand.Name!.Substring(command.Name.Length).Trim()
: childCommand.Name!;
// Usage
WriteHorizontalMargin(4);
WriteCommandUsageLineItem(descendantCommand, false);
// Name
WriteHorizontalMargin();
Write(ConsoleColor.Cyan, relativeCommandName);
// Description
if (!string.IsNullOrWhiteSpace(childCommand.Description))
{
WriteColumnMargin();
Write(childCommand.Description);
}
WriteLine();
}
// Child command help tip
WriteVerticalMargin();
Write("You can run `");
Write(_metadata.ExecutableName);
@@ -339,6 +356,7 @@ namespace CliFx.Domain
IReadOnlyDictionary<CommandArgumentSchema, object?> defaultValues)
{
var commandName = command.Name;
var childCommands = root.GetChildCommands(commandName);
var descendantCommands = root.GetDescendantCommands(commandName);
_console.ResetColor();
@@ -350,7 +368,7 @@ namespace CliFx.Domain
WriteCommandUsage(command, descendantCommands);
WriteCommandParameters(command);
WriteCommandOptions(command, defaultValues);
WriteCommandDescendants(command, descendantCommands);
WriteCommandChildren(command, childCommands);
}
}