commandlineparser / commandlineparser/commandline
Implement --no-SOME_OPTION
- 主要語言
- C#
- 星號
- 4.8k
- 分支
- 478
- PR 合併指標
- 30 天內沒有已合併 PR
描述
I want these mutually exclusive options:
- --updateParts
- --not-updateParts
The default is to update parts, and it's disabled if the second flag is passed. The user needs to pass one flag or the other (so they don't get a behavior they didn't explicitly ask for).
Is there any way to do this? I had a go with this:
`class Options
{
private static bool _updateParts;
public Options(bool updateParts, bool doNotUpdateParts)
{
_updateParts = updateParts;
if (doNotUpdateParts) _updateParts = false;
}
[Option('c', "updateParts", SetName = "update", Required = true, Default = true)]
public static bool UpdateParts { get { return _updateParts; } }
[Option('C', "no-updateParts", SetName = "noUpdate", Required = true, Default = false)]
public static bool DoNotUpdateParts { get { return !_updateParts; } }
}`
Generally speaking this works, but it means I can't add two other options which are mutually exclusive. Imagine I now want to add:
- --doLogging
- --not-doLogging
I can't make them mutually exclusive because they don't belong to either set update or noUpdate.
貢獻指南
這個儲存庫沒有索引到貢獻指南
研究方向
No source file or test is named. Start by tracing how Option attributes, SetName, Required, and Default are validated, then examine how multiple mutually exclusive groups are represented. Done means independent updateParts and doLogging flag pairs can each enforce their own exclusivity without conflicting groups, with coverage for omitted and conflicting flags.
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- csharp
- 領域
- cli
- Issue 類型
- 功能
- 難度
- 4/5
- 預估耗時
- 3-5 天
- 活躍度
- 停滯
- 描述清晰度
- 基本清楚
- 新手友好度
- 35/100