commandlineparser / commandlineparser/commandline

Suggestion: Parsed class should have an ExtraArgs property

Aberta
#680 0 comentários 1 reação 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

The current way to catch any extra args at the end of the command line is to use an `IEnumerable` property (with the `Value` attribute and an index higher than any other `Value` attributes), which will end up catching all the extra args passed on the command line. I suggest that catching extra args is such a common scenario that the extra args should always be available to the library user, whether or not they have defined a final `IEnumerable` property in their option type. So I propose the following:

* ParserResult class, or perhaps just its Parsed subclass, gains an ExtraArgs property of type `IEnumerable`.
* The `WithParsed` methods in ParserResultExtensions gain another overload that takes an `Action>`. This will receive the parsed option instance as its first parameter, and the extra args, if any, as a second parameter. (If all args were parsed into the option instance, the extra args will be an empty `IEnumerable`, but it is guaranteed to **never be null**.)
* Likewise, the `WithParsed` methods in ParserResultExtensionsAsync will also gain an overload that takes a `Func, Task>`, and the second parameter is guaranteed to **never be null**.

Given the existence of issues like https://github.com/commandlineparser/commandline/issues/63, it seems clear that the current design of CommandLineParser where you don't have access to any "extra" args unless you put an `IEnumerable` into your options is not intuitive to everyone, and many people expect the library to hand them any extra args and let them decide what to do with them.

This would **NOT** be a breaking change, so it could go into a 2.x release, but I don't suggest holding up the 2.9 release to get this feature in.

Guia de contribuição

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

Direção de pesquisa

Comece lendo ParserResult e sua subclasse Parsed; em seguida, inspecione as sobrecargas WithParsed em ParserResultExtensions e ParserResultExtensionsAsync. Defina como ExtraArgs é exposto e garanta que as sobrecargas síncronas e assíncronas forneçam uma sequência não nula; revise os testes existentes de resultados do parser e adicione cobertura para argumentos finais analisados e não analisados.

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
30/100

Receba novas issues na sua caixa de entrada

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