Multi instance setting ignored when default verb is parsed.
还没有人认领这个 Issue。
评估
调研方向
首先使用提供的 ParseArguments 和 MapResult 示例复现问题,尤其是 argTest5,并跟踪启用 AllowMultiInstance 后默认 verb 的解析方式。当默认 verb 接受重复的选项值而不报告该选项被定义多次,同时其他示例仍能正确解析时,即表示完成。
由索引模型根据 Issue 内容生成。
描述
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.
- 主要语言
- C#
- 星标
- 4.8k
- 派生
- 478
- PR 合并指标
- 30 天内没有已合并 PR
贡献指南
这个仓库没有索引到贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
commandlineparser/commandline 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 68/100
commandlineparser/commandline#951 · 1 条评论 ·
-
难度 1/5 1 小时以内 新手友好度 70/100
commandlineparser/commandline#880 · 2 个 reaction ·
-
难度 5/5 一周以上 新手友好度 45/100
commandlineparser/commandline#952 ·
-
难度 3/5 1-2 天 新手友好度 35/100
commandlineparser/commandline#948 ·
-
难度 5/5 一周以上 新手友好度 35/100
commandlineparser/commandline#947 ·
查看 commandlineparser/commandline 的全部 Issue
相似的 Issue
-
core dependencies
难度 1/5 1 小时以内 新手友好度 80/100
-
bug frontend good first issue
难度 2/5 1-3 小时 新手友好度 75/100
-
NavigationViewItemAutomationPeer implements IInvokeProvider but never advertises the Invoke pattern 未关闭
难度 2/5 1-3 小时 新手友好度 75/100
unoplatform/uno#24629 ·
-
agentic-workflows Needs: Triage :mag: State: In-PR
难度 2/5 1-3 小时 新手友好度 70/100
-
Down / Waiting for removal
难度 2/5 1-3 小时 新手友好度 70/100