commandlineparser / commandlineparser/commandline
Settings "EnableDashDash" separator doesn't work properly if last option before "--" is an enumerable option
- Linguagem predominante
- C#
- Estrelas
- 4.8k
- Forks
- 478
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Descrição
Tested with version 2.8.0 from NuGet
Example code:
```
using System;
using System.Collections.Generic;
using CommandLine;
class Options
{
[Option("firstOption")]
public bool firstOption { get; set; }
[Option("secondOption", Separator = ',', Required = false)]
public IEnumerable secondOption { get; set; }
[Option("thirdOption", Required = false)]
public string thirdOption { get; set; }
[Value(0)]
public IEnumerable additional {get; set; }
}
public class Program
{
public static void Main()
{
var arguments = "--firstOption --secondOption=\"first,second,third\" -- addfirst addsecond -addthird";
//var arguments = "--firstOption --secondOption=\"first,second,third\" --thirdOption=blabla -- addfirst addsecond -addthird";
Console.WriteLine($"Command => {arguments}");
var args = arguments.Split();
Init(args);
}
public static void Init(string[] args)
{
var p = new Parser(with => with.EnableDashDash = true);
var result = p.ParseArguments(args).WithParsed(options =>{
Console.WriteLine($"firstOption: {options.firstOption}");
var joined = string.Join(",", options.secondOption);
Console.WriteLine($"secondOption: {joined}");
joined = string.Join(",", options.additional);
Console.WriteLine($"additional: {joined}");
} ).WithNotParsed (e=>e.Dump());
}
}
```
If the code is ran with the first version of the arguments the following output results, which is not the expected behavior:
```
Command => --firstOption --secondOption="first,second,third" -- addfirst addsecond -addthird
firstOption: True
secondOption: "first,second,third",addfirst,addsecond,-addthird
additional:
```
if we add another option between the "--" end of options "separator" we have the expected behavior:
```
Command => --firstOption --secondOption="first,second,third" --thirdOption=blabla -- addfirst addsecond -addthird
firstOption: True
secondOption: "first,second,third"
additional: addfirst,addsecond,-addthird
```
Guia de contribuição
Nenhum guia de contribuição indexado para este repositório
Direção de pesquisa
Comece executando a reprodução em C# fornecida por meio de Parser.ParseArguments com EnableDashDash habilitado, comparando as duas variantes de argumentos. Rastreie como o enumerable secondOption é tratado antes do separador -- e adicione um teste de regressão para a primeira variante; estará concluído quando os valores antes de -- permanecerem em secondOption e addfirst, addsecond e -addthird preencherem valores adicionais.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- csharp
- Domínio
- cli
- Tipo de issue
- Bug
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Status de atividade
- Estagnada
- Clareza
- Razoavelmente clara
- Facilidade para iniciantes
- 35/100