commandlineparser / commandlineparser/commandline

Default supported verbs/options should not return non-zero exit code

Aperta
#841 2 commenti 7 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
C#
Stelle
4.8k
Fork
478
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

This library should not return a non-zero exit code for the default supported verbs and options:

- help
- version
- --help
- --version

```csharp
using System;
using CommandLine;

public class Program
{
[Verb("add", HelpText = "Add file contents to the index.")]
class AddOptions
{
[Option(Default = false, HelpText = "Prints all messages to standard output.")]
public bool Verbose { get; set; }
}

[Verb("commit", HelpText = "Record changes to the repository.")]
class CommitOptions
{
}

static int Main(string[] args)
{
var exitCode = Parser.Default.ParseArguments(args)
.MapResult(
(AddOptions opts) => 0,
(CommitOptions opts) => 0,
errs => 1
);

Console.WriteLine($"exitCode = {exitCode}");
return exitCode;
}
}
```

Executing this code results in the following outputs:
```
> ConsoleApp1.exe version
ConsoleApp1 1.0.0.0
exitCode = 1

> ConsoleApp1.exe help
ConsoleApp1 1.0.0.0
Copyright c 2022

add Add file contents to the index.

commit Record changes to the repository.

help Display more information on a specific command.

version Display version information.

exitCode = 1

> ConsoleApp1.exe --version
ConsoleApp1 1.0.0.0
exitCode = 1

> ConsoleApp1.exe --help
ConsoleApp1 1.0.0.0
Copyright c 2022

add Add file contents to the index.

commit Record changes to the repository.

help Display more information on a specific command.

version Display version information.

exitCode = 1

> ConsoleApp1.exe help add
ConsoleApp1 1.0.0.0
Copyright c 2022

--verbose (Default: false) Prints all messages to standard output.

--help Display this help screen.

--version Display version information.

exitCode = 1

> ConsoleApp1.exe add --version
ConsoleApp1 1.0.0.0
exitCode = 1

> ConsoleApp1.exe add --help
ConsoleApp1 1.0.0.0
Copyright c 2022

--verbose (Default: false) Prints all messages to standard output.

--help Display this help screen.

--version Display version information.

exitCode = 1
```

As far as I can tell, those errors can be handled by the consumer as in your [code example](https://dotnetfiddle.net/wrcAxr) or by doing it like suggested in #660.

However, since those verbs/options are **supported** they should not result in an error and therefore also should not require to be handled by the consumer.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.