1

I have a System.CommandLine option like this (LogLevel is an enum):

    private static readonly Option<LogLevel> option = new(new[] { "--logLevel" })
    {
        Description = "The severity (log level)."
    };

The automatically generated help lists all the enum values as valid values for "--logLevel":

<Debug|Detailed|Error|Fatal|Info|Off|Silent|Warning>

But is it somehow possible to disallow some of them with System.CommandLine or even map strings on enum values (e.g. "W" is mapped to the enum value Warning)?

hardfork
  • 2,470
  • 1
  • 23
  • 43

1 Answers1

0

I found an answer in the Microsoft documentations:

It works like this:

var parser = new CommandLineBuilder(rootCommand)
        .UseDefaults()
        .UseHelp(ctx =>
        {
            ctx.HelpBuilder.CustomizeSymbol(foregroundColorOption,
                firstColumnText: "--color <Black, White, Red, or Yellow>",
                secondColumnText: "Specifies the foreground color. " +
                    "Choose a color that provides enough contrast " +
                    "with the background color. " +
                    "For example, a yellow foreground can't be read " +
                    "against a light mode background.");
        })
        .Build();

await parser.InvokeAsync(args);

foregroundColorOption is in this case the option and via firstColumnText, we can print whatever values of the enum we want to print.

hardfork
  • 2,470
  • 1
  • 23
  • 43