commandlineparser / commandlineparser/commandline

Proposal for handling multiple mutual exclusive sets

Aberta
#419 3 comentários 10 reações 0 responsáveis Ver no GitHub
Linguagem predominante
C#
Estrelas
4.8k
Forks
478
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

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

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.