Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Приложения командной строки обычно предоставляют возможность отображения краткого описания доступных команд, параметров и аргументов.
System.CommandLine
предоставляет System.CommandLine.Help.HelpOption
, который по умолчанию включен в параметры RootCommand.
System.CommandLine. Help.HelpOption формирует справочную информацию для определенных символов, используя сведения, предоставляемые System.CommandLine.Symbol.Name
, System.CommandLine.Symbol.HelpName
, System.CommandLine.Symbol.Description
и другими свойствами, такими как значение по умолчанию или источники завершения.
Option<FileInfo> fileOption = new("--file")
{
Description = "The file to print out.",
};
Option<bool> lightModeOption = new("--light-mode")
{
Description = "Determines whether the background color will be black or white"
};
Option<ConsoleColor> foregroundColorOption = new("--color")
{
Description = "Specifies the foreground color of console output",
DefaultValueFactory = _ => ConsoleColor.White
};
RootCommand rootCommand = new("Read a file")
{
fileOption,
lightModeOption,
foregroundColorOption
};
rootCommand.Parse("-h").Invoke();
Description:
Read a file
Usage:
scl [options]
Options:
-?, -h, --help Show help and usage information
--version Show version information
--file The file to print out.
--light-mode Determines whether the background color will be black
or white
--color Specifies the foreground color of console output
<Black|Blue|Cyan|DarkBlue|DarkCyan|DarkGray|DarkGreen|Da [default: White]
rkMagenta|DarkRed|DarkYellow|Gray|Green|Magenta|Red|Whit
e|Yellow>
Пользователи приложений могут привыкнуть к различным способам запроса помощи на разных платформах, поэтому приложения, созданные на System.CommandLine
, отвечают на множество способов запроса помощи. Следующие команды эквивалентны:
dotnet --help
dotnet -h
dotnet /h
dotnet -?
dotnet /?
Выходные данные справки не всегда отображают все доступные команды, аргументы и параметры. Некоторые из них могут быть скрыты с помощью свойства System.CommandLine.Symbol.Hidden
, что означает, что они не отображаются в справке (и при автозаполнении), но их можно указать в командной строке.
Настройка пользовательской справки
Вы можете настроить выходные данные справки для команд, определив конкретный текст справки для каждого символа, обеспечивая дополнительную ясность для пользователей относительно их использования.
Чтобы настроить имя аргумента параметра, используйте свойство параметра System.CommandLine.Option.HelpName
.
В примере приложения понятие --light-mode
объясняется достаточно, но изменения в описаниях вариантов --file
и --color
будут полезны. Для --file
аргумент можно определить как <FILEPATH>
. Вы можете сократить список доступных цветов для опции --color
.
Чтобы внести эти изменения, добавьте предыдущий код с помощью следующего кода:
fileOption.HelpName = "FILEPATH";
foregroundColorOption.AcceptOnlyFromAmong(
ConsoleColor.Black.ToString(),
ConsoleColor.White.ToString(),
ConsoleColor.Red.ToString(),
ConsoleColor.Yellow.ToString()
);
Теперь приложение создает следующую справочную информацию:
Description:
Read a file
Usage:
scl [options]
Options:
-?, -h, --help Show help and usage information
--version Show version information
--file <FILEPATH> The file to print out.
--light-mode Determines whether the background color will be black or white
--color <Black|Red|White|Yellow> Specifies the foreground color of console output [default: White]
Добавьте разделы для улучшения выходных данных
Вы можете добавить первые или последние части в вывод справки. Например, предположим, что вы хотите добавить в раздел описания ASCII-арт, используя пакет NuGet Spectre.Console.
Определите пользовательское действие, которое выполняет дополнительную логику до и после вызова по умолчанию HelpAction
:
internal class CustomHelpAction : SynchronousCommandLineAction
{
private readonly HelpAction _defaultHelp;
public CustomHelpAction(HelpAction action) => _defaultHelp = action;
public override int Invoke(ParseResult parseResult)
{
Spectre.Console.AnsiConsole.Write(new FigletText(parseResult.RootCommandResult.Command.Description!));
int result = _defaultHelp.Invoke(parseResult);
Spectre.Console.AnsiConsole.WriteLine("Sample usage: --file input.txt");
return result;
}
}
Обновите HelpAction
, определенное RootCommand
, чтобы использовать настраиваемое действие:
for (int i = 0; i < rootCommand.Options.Count; i++)
{
// RootCommand has a default HelpOption, we need to update its Action.
if (rootCommand.Options[i] is HelpOption defaultHelpOption)
{
defaultHelpOption.Action = new CustomHelpAction((HelpAction)defaultHelpOption.Action!);
break;
}
}
Результат вывода справки теперь выглядит следующим образом:
____ _ __ _ _
| _ \ ___ __ _ __| | __ _ / _| (_) | | ___
| |_) | / _ \ / _` | / _` | / _` | | |_ | | | | / _ \
| _ < | __/ | (_| | | (_| | | (_| | | _| | | | | | __/
|_| \_\ \___| \__,_| \__,_| \__,_| |_| |_| |_| \___|
Description:
Read a file
Usage:
scl [options]
Options:
-?, -h, --help Show help and usage information
--version Show version information
--file <FILEPATH> The file to print out.
--light-mode Determines whether the background color will be black or white
--color <Black|Red|White|Yellow> Specifies the foreground color of console output [default: White]
Sample usage: --file input.txt