commandlineparser / commandlineparser/commandline
Default supported verbs/options should not return non-zero exit code
- 主要語言
- C#
- 星號
- 4.8k
- 分支
- 478
- PR 合併指標
- 30 天內沒有已合併 PR
描述
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.
貢獻指南
這個儲存庫沒有索引到貢獻指南
研究方向
先透過 Parser.Default.ParseArguments 和 MapResult 重現列出的命令,接著追蹤 help 和 version 請求在剖析結果中的表示方式。驗證 help、version、--help 和 --version 的行為,包括命令特定的形式;當受支援的請求在不需要消費者端處理的情況下回傳 exitCode 0 時,即可視為 issue 已解決。
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- csharp
- 領域
- cli
- Issue 類型
- 缺陷
- 難度
- 3/5
- 預估耗時
- 1-2 天
- 活躍度
- 停滯
- 描述清晰度
- 基本清楚
- 新手友好度
- 45/100