commandlineparser / commandlineparser/commandline

Proposal for handling multiple mutual exclusive sets

未關閉
#419 3 則留言 10 個 reaction 已指派 0 人 在 GitHub 檢視
主要語言
C#
星號
4.8k
分支
478
PR 合併指標
30 天內沒有已合併 PR

描述

As probably already discussed in #79 and #93 I would need to specify multiple mutual exclusive sets.

I would suggest to distinguish between multiple sets at an interface level.

For example I have a command that requires either a workspace name or a path to a workspace. The same command expects a connection name or user-host combination:

```csharp
interface IWorkspaceOptions
{
[Option(Required = true, SetName = "fromName")]
string WorkspaceName { get; set; }

[Option(Required = true, SetName = "Path")]
string FromPath { get; set; }
}

interface IConnectionOptions
{
[Option(Required = true, SetName = "fromName")] // not in the same set as IWorkspaceOptions !
string ConnectionName { get; set; }

[Option(Required = true, SetName = "Params")]
string Host { get; set; }

[Option(SetName = "Params")]
string User { get; set; }
}

class Opts : IWorkspaceOptions, IConnectionOptions
{
public string ConnectionName { get; set; }
public string Host { get; set; }
public string User { get; set; }
public string WorkspaceName { get; set; }
public string FromPath { get; set; }
}
```

I would expect the following command lines to be valid:

```
--WorkspaceName MyWorkspace --ConnectionName MyConnection
--WorkspaceName MyWorkspace --Host 1.2.3.4
--WorkspaceName MyWorkspace --Host 1.2.3.4 --User Foo
--FromPath C:\TMP --ConnectionName MyConnection
--FromPath C:\TMP --Host 1.2.3.4
--FromPath C:\TMP --Host 1.2.3.4 --User Foo
```

and the following invalid:
```--WorkspaceName MyWorkspace```
> Missing required connection options

```--ConnectionName MyConnection```
> Missing workspace options

```--WorkspaceName MyWorkspace --ConnectionName MyConnection --User Foo```
> Invalid mixture of mutual exclusive connection options

貢獻指南

這個儲存庫沒有索引到貢獻指南

研究方向

未指定原始檔案、測試或進入點。首先定位現有的 Option SetName 和互斥處理,然後將其行為與此 issue 中的介面範例和命令列進行比較。完成的標準是支援跨介面的獨立互斥集合,並產生所述的有效和無效結果。

由索引模型根據 Issue 內容生成。

評估

技術堆疊
csharp
領域
cli
Issue 類型
功能
難度
5/5
預估耗時
一週以上
活躍度
停滯
描述清晰度
基本清楚
新手友好度
30/100

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

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