-
Notifications
You must be signed in to change notification settings - Fork 2
ParameterMissingException when parsing equal-separated key-value pair args #3
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.log
Expected 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?