commandlineparser / commandlineparser/commandline
Support for custom dynamic help option for a single subcommand?
- 主要语言
- C#
- 星标
- 4.8k
- 派生
- 478
- PR 合并指标
- 30 天内没有已合并 PR
描述
For all my current subcommands I am using the default help option (which is very nice btw!). I have 1 subcommand that I want the default help options to be turned off for so that I can display custom help code inside of my subcommand's OnExecute method:
```
protected bool HandleHelp(){
//TO DO: Check to see if --help was passed in and display custom help text to the console based on a Dictionary of known commands on current machine.
}
protected override async Task OnExecute(CommandLineApplication app)
{
try
{
//Load a list of all the available commands
BuildListOfKnownCommands();
//Check for help option and display help message for specific tool
if(HandleHelp()){
return 0;
}
//TO DO: Run command
return 0;
}
catch (Exception ex)
{
OnException(ex);
return 1;
}
```
Is there an easy way to do this?
I have tried adding a member to my subcommand like so:
```
[HelpOption("--help")]
public bool HelpRequested {get;set;} = false;
```
but this gives me the error message **"Multiple HelpOptionAttributes found. HelpOptionAttribute should only be used one per type, either on one property or type."**
I tried using the attribute `[SuppressDefaultHelpOption]` to disable the default --help behavior but that didn't seem to take.
My subcommand has the following options:
```
[Command(Name = "tools", OptionsComparison = StringComparison.InvariantCultureIgnoreCase, Description = "Run helpful developer tools and scripts")]
[SuppressDefaultHelpOption]
```
Can the default --help behavior be turned off for just a single subcommand so that I can do my own custom dynamic --help function?
Thanks!
贡献指南
这个仓库没有索引到贡献指南
调研方向
首先跟踪 HelpOptionAttribute 和 SuppressDefaultHelpOption 在 OnExecute 运行前如何应用于子命令。复现 issue 中描述的单个子命令情况,然后验证可以为该子命令禁用默认的 --help 行为,同时其他子命令仍保留该行为,并且可以运行 OnExecute 中的自定义处理。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- csharp
- 领域
- cli
- Issue 类型
- 功能
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 35/100