commandlineparser / commandlineparser/commandline

Implement --no-SOME_OPTION

未關閉
#783 10 則留言 1 個 reaction 已指派 0 人 在 GitHub 檢視
good first issue help wanted
主要語言
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

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。