Multi instance setting ignored when default verb is parsed.
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 35/100
Rechercherichtung
Beginne damit, das Problem mit dem bereitgestellten ParseArguments- und MapResult-Beispiel zu reproduzieren, insbesondere mit argTest5, und verfolge, wie das Standardverb bei aktiviertem AllowMultiInstance geparst wird. Als erledigt gilt die Aufgabe, wenn das Standardverb wiederholte Optionswerte akzeptiert, ohne die Option als mehrfach definiert zu melden, während die anderen Beispiele weiterhin korrekt geparst werden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Describe the bug
When using the function "MapResult" to parse multiple verbs, the parser ignores the setting "AllowMultiInstance" while parsing the default verb.
Lib version: 2.9.1
Language: C#
To Reproduce
Test the following demo code to see the result.
Demo Class Options:
[Verb("log", isDefault:true, HelpText = "Log command")]
class LogOptions
{
[Option('a', HelpText = "Option A for log command")]
public IEnumerable<string> OptionA { get; set; }
[Option('b', HelpText = "Option B for log command")]
public IEnumerable<string> OptionB { get; set; }
}
[Verb("save", HelpText = "Save command")]
class SaveOptions
{
[Option('d', HelpText = "Option D for save command")]
public IEnumerable<string> OptionD { get; set; }
[Option('e', HelpText = "Option E for save command")]
public IEnumerable<string> OptionE { get; set; }
}
Demo code:
Parser parser = new(x =>
{
x.HelpWriter = Console.Out;
x.IgnoreUnknownArguments = true;
x.AllowMultiInstance = true;
x.AutoHelp = true;
});
var argTest1 = "log -a valueA -b valueB" .Split(' '); // This works.
var argTest2 = "save -d valueD -e valueE".Split(' '); // This works.
var argTest3 = "-a valueA -b valueB".Split(' '); // This works.
var argTest4 = "log -a valueA -b valueB -b valueB2".Split(' '); // This works.
var argTest5 = " -a valueA -b valueB -b valueB2".Split(' '); // This don't work.
var res = parser.ParseArguments<LogOptions, SaveOptions>(argTest5).MapResult(
(LogOptions opts) => ProcessLogCommand(opts),
(SaveOptions opts) => ProcessSaveCommand(opts),
errs => 1);
}
When trying to parse argTest5 this error is shown:
ERROR(S):
Option 'b' is defined multiple times.
-a Option A for log command
-b Option B for log command
--help Display this help screen.
--version Display version information.
Expected behavior
Option "SaveOptions" correctly parsed with multiple arguments for argument b.
- Vorherrschende Sprache
- C#
- Sterne
- 4.8k
- Forks
- 478
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus commandlineparser/commandline
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
commandlineparser/commandline#951 · 1 Kommentar ·
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 70/100
commandlineparser/commandline#880 · 2 Reaktionen ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 45/100
commandlineparser/commandline#952 ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 35/100
commandlineparser/commandline#948 ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
commandlineparser/commandline#947 ·
Alle Issues in commandlineparser/commandline
Ähnliche Issues
-
core dependencies
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 80/100
-
bug frontend good first issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
NavigationViewItemAutomationPeer implements IInvokeProvider but never advertises the Invoke pattern Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
unoplatform/uno#24629 ·
-
agentic-workflows Needs: Triage :mag: State: In-PR
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
-
Down / Waiting for removal
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100