-
Notifications
You must be signed in to change notification settings - Fork 2
Description
Commander.NET throws ParameterMissingException when parsing equal-separated key-value pair args.
Steps to Reproduce
Step 1: NginxRunConfig.cs
namespace NginxGUI
{
internal class NginxRunConfig
{
[Parameter("--command", Description = "Path of the nginx command")]
public string Command;
[Parameter("--prefix")]
public string Prefix;
[Parameter("--pid-path")]
public string PidPath;
[Parameter("--error-log-path")]
public string ErrorLogPath;
}
}Step 2: Program.cs
namespace NginxGUI
{
internal static class Program
{
[STAThread]
static void Main(string[] args)
{
NginxRunConfig rc = null;
CommanderParser<NginxRunConfig> parser = new CommanderParser<NginxRunConfig>();
parser.Add(args)
.Separators(Separators.Equals)
.Bindings(BindingFlags.Public | BindingFlags.Instance);
try
{
rc = parser.Parse();
}
catch (ParameterMissingException ex)
{
Console.WriteLine("Missing parameter: " + ex.ParameterName);
}
catch (ParameterFormatException ex)
{
Console.WriteLine(ex.Message);
}
// ...
}
}
}Step 3: Debug CLI Arguments
--command=C:\Library\nginx-1.22.0\nginx.exe --prefix=C:\Library\nginx-1.22.0 --pid-path=logs\nginx.pid --error-log-path=logs\error.logExpected Result
As [doucmentation](https://github.com/gmantaos/Commander.NET#key-value-separators) says
Currently available separators:
- Separators.Space
- Separators.Equals
- Separators.Colon
- Separators.All
since separator flags of key-value pair were set to Separators.Equals, so Arg --command=C:\Library\nginx-1.22.0\nginx.exe should be accepted by the parser.
Actual Result
A ParameterFormatException occurred:
Missing parameter: --command
If I change separators to Separators.Space and change CLI Arguments to space-separated key-value pair, like--command C:\Library\nginx-1.22.0\nginx.exe, then Args can to parsed successfully.
Additional Information
- Commander.NET 1.1.11
- .Net Framework 4.8
- Windows 10.0.19044
Have I missed something?