Skip to content

CommandLineBuilder inconsistency? #2034

Closed
@cyungmann

Description

@cyungmann

Invoking the following program with no arguments:

using System.CommandLine;
using System.CommandLine.Builder;
using System.CommandLine.Parsing;

internal static class Program
{
    //private static Task<int> Main(string[] args) =>
    //    new CommandLineBuilder(CreateRootCommand())
    //    .Build()
    //    .InvokeAsync(args);

    private static Task<int> Main(string[] args) =>
        CreateRootCommand().InvokeAsync(args);

    private static Command CreateRootCommand()
    {
        var rootCommand = new RootCommand("Specifying a sub-command is required.");
        var fooCommand = new Command("foo");
        rootCommand.Add(fooCommand);
        return rootCommand;
    }
}

results in a red error message that says "Required command was not provided." followed by the program help text, and the program returns an error exit code.

However, if I replace the Main method above with the commented-out Main method and invoke the program with no arguments, then nothing appears and the program returns a successful exit code.

Is this discrepancy intentional? If so, how do I make the CommandLineBuilder version behave the same as the non-CommandLineBuilder version?

This is using System.CommandLine 2.0.0-beta4.22272.1

Thanks!

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions