Multi instance setting ignored when default verb is parsed.
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 35/100
Hướng nghiên cứu
Bắt đầu bằng cách tái hiện vấn đề với ví dụ ParseArguments và MapResult được cung cấp, đặc biệt là argTest5, rồi theo dõi cách verb mặc định được phân tích khi AllowMultiInstance được bật. Được xem là hoàn tất khi verb mặc định chấp nhận các giá trị tùy chọn lặp lại mà không báo tùy chọn được định nghĩa nhiều lần, trong khi các ví dụ khác vẫn tiếp tục được phân tích chính xác.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Describe the bug
When using the function "MapResult" to parse multiple verbs, the parser ignores the setting "AllowMultiInstance" while parsing the default verb.
Lib version: 2.9.1
Language: C#
To Reproduce
Test the following demo code to see the result.
Demo Class Options:
[Verb("log", isDefault:true, HelpText = "Log command")]
class LogOptions
{
[Option('a', HelpText = "Option A for log command")]
public IEnumerable<string> OptionA { get; set; }
[Option('b', HelpText = "Option B for log command")]
public IEnumerable<string> OptionB { get; set; }
}
[Verb("save", HelpText = "Save command")]
class SaveOptions
{
[Option('d', HelpText = "Option D for save command")]
public IEnumerable<string> OptionD { get; set; }
[Option('e', HelpText = "Option E for save command")]
public IEnumerable<string> OptionE { get; set; }
}
Demo code:
Parser parser = new(x =>
{
x.HelpWriter = Console.Out;
x.IgnoreUnknownArguments = true;
x.AllowMultiInstance = true;
x.AutoHelp = true;
});
var argTest1 = "log -a valueA -b valueB" .Split(' '); // This works.
var argTest2 = "save -d valueD -e valueE".Split(' '); // This works.
var argTest3 = "-a valueA -b valueB".Split(' '); // This works.
var argTest4 = "log -a valueA -b valueB -b valueB2".Split(' '); // This works.
var argTest5 = " -a valueA -b valueB -b valueB2".Split(' '); // This don't work.
var res = parser.ParseArguments<LogOptions, SaveOptions>(argTest5).MapResult(
(LogOptions opts) => ProcessLogCommand(opts),
(SaveOptions opts) => ProcessSaveCommand(opts),
errs => 1);
}
When trying to parse argTest5 this error is shown:
ERROR(S):
Option 'b' is defined multiple times.
-a Option A for log command
-b Option B for log command
--help Display this help screen.
--version Display version information.
Expected behavior
Option "SaveOptions" correctly parsed with multiple arguments for argument b.
- 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
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
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của commandlineparser/commandline
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
commandlineparser/commandline#951 · 1 bình luận ·
-
Code example misses iEnumerable Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 70/100
commandlineparser/commandline#880 · 2 reaction ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 45/100
commandlineparser/commandline#952 ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
commandlineparser/commandline#948 ·
-
How to add examples for verbs? Đang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
commandlineparser/commandline#947 ·
Tất cả issue của commandlineparser/commandline
Issue tương tự
-
core dependencies
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 80/100
-
bug frontend good first issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
NavigationViewItemAutomationPeer implements IInvokeProvider but never advertises the Invoke pattern Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
unoplatform/uno#24629 ·
-
agentic-workflows Needs: Triage :mag: State: In-PR
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
-
Down / Waiting for removal
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100