commandlineparser / commandlineparser/commandline

Default verb treated as a value.

Open
#794 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
C#
Stars
4.8k
Forks
478
PR merge metrics
No merged PRs in 30d

Description

This was seen on version 2.8.0 targeting .NET Core 3.1 / 5.

Minimum code sample:
```
void Main()
{
var parser = new Parser();
var result = parser.ParseArguments(new[] { "copy", @"A:\", @"C:\", });
result
.WithParsed(a =>
{
Console.WriteLine(a.SourcePath);
Console.WriteLine(a.DestinationPath);
});
}

[Verb("copy", isDefault: true)]
class CopyArguments
{
[Value(0, MetaName = "source", Required = true)]
public string? SourcePath { get; set; }

[Value(1, MetaName = "destination", Required = true)]
public string? DestinationPath { get; set; }
}
````

This prints "copy" for `SourcePath` and "A:\\" for `DestinationPath`.

At this point in development I only have one verb (more verbs are planned), and that verb is/will be the default one.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reproducing the sample through Parser.ParseArguments with the [Verb] and [Value] attributes shown. Trace how the default verb is handled before positional values are assigned, then add or update a regression test proving SourcePath receives A:\ and DestinationPath receives C:\ when the default verb is omitted from the arguments.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
cli
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.