commandlineparser / commandlineparser/commandline

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

Đang mở
#841 2 bình luận 7 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
C#
Star
4.8k
Fork
478
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

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.

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Hướng nghiên cứu

Bắt đầu bằng cách tái hiện các lệnh được liệt kê thông qua Parser.Default.ParseArguments và MapResult, sau đó theo dõi cách các yêu cầu help và version được biểu diễn trong kết quả parsing. Xác minh hành vi của help, version, --help và --version, bao gồm các dạng dành riêng cho từng lệnh, và coi issue là đã được giải quyết khi các yêu cầu được hỗ trợ trả về exitCode 0 mà không cần xử lý ở phía consumer.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
csharp
Lĩnh vực
cli
Loại issue
Lỗi
Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
45/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.