commandlineparser / commandlineparser/commandline
Is there a way to implement multiple level verbs?
- Linguagem predominante
- C#
- Estrelas
- 4.8k
- Forks
- 478
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Descrição
**Issue by [akfish](https://github.com/akfish)**
_Thursday Oct 31, 2013 at 19:48 GMT_
_Originally opened as https://github.com/gsscoder/commandline/issues/107_
----
I am trying to make an app with multiple level of verbs, something like:
```
app repo list
app repo add
app account list
```
What I tried is:
``` cs
class Options
{
#region Global Options
//...
#endregion
#region Help
//..
#endregion
#region Verbs
[VerbOption("account", HelpText = "Manage mail accounts")]
public AccountOptions AccountVerb { get; set; }
[VerbOption("repo", HelpText = "Manage repositories")]
public RepoOptions RepoVerb { get; set; }
#endregion
}
```
In each verb, nested a sub verb:
``` cs
class AccountOptions : IOptions
{
[VerbOption("add", HelpText = "Add an account")]
public AddOption AddVerb { get; set; }
//And so on....
public class AddOption : IOptions
{
}
//And so on....
}
```
main:
``` cs
class Program
{
static void Main(string[] args)
{
string theVerb = null;
IOptions theOptions = null;
var options = new Options();
if (CommandLine.Parser.Default.ParseArguments(args, options, (verb, subOptions) =>
{
theVerb = verb;
if (verb != null)
theOptions = subOptions as IOptions;
}))
{
theOptions.Execute(options);
}
else
{
Console.Error.WriteLine("Command line parsing error.");
}
}
}
```
I was able to get first level of verbs to working (e.g. `app repo`, `app account`, as the documents said. But the second level ones (`app account list`, `app account add`) didn't.
So is there a way to do this? Thanks.
Guia de contribuição
Nenhum guia de contribuição indexado para este repositório
Direção de pesquisa
Comece em Program.Main e na chamada a ParseArguments; em seguida, inspecione como Options, AccountOptions e o AddOption aninhado são descobertos. Reproduza app account list e app account add com o modelo mostrado e determine se o parser oferece suporte a definições aninhadas de VerbOption. Considera-se concluído quando os comandos multinível solicitados forem analisados e despachados corretamente, com testes cobrindo os exemplos.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- csharp
- Domínio
- cli
- Tipo de issue
- Funcionalidade
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Status de atividade
- Estagnada
- Clareza
- Razoavelmente clara
- Facilidade para iniciantes
- 25/100