I am attempting to upgrade my commandlineparser code to the latest version and I am struggling.
The program's requirements are pretty simple: must have one and only one parameter, with a choice between two options.
Here is what I would ultimately like to have:
[Option("daysback", Required = false, Group = "onerequired", SetName = "daysback", Min = 0, Max = 999, HelpText = "Number of days back in time for run date.")]
public int? DaysBack { get; set; }
[Option("date", Required = false, Group = "onerequired", SetName = "date", HelpText = "Specific date for run date (yyyymmdd).")]
public string RunDate { get; set; }
Group would require at least one parameter, setname would make them mutually exclusive, max and min would check a value.
Unfortunately (according to docs), group and setname cannot be used together, so I had to drop group. And, min/max cannot be used on an int argument, so also dropped.
So now we look like this:
[Option("daysback", Required = false, SetName = "daysback", HelpText = "Number of days back in time for run date.")]
public int? DaysBack { get; set; }
[Option("date", Required = false, SetName = "date", HelpText = "Specific date for run date (yyyymmdd).")]
public string RunDate { get; set; }
Which is okay, but means that I have more checking to do myself.
Two questions please:
As is, this will parse cleanly if no arguments are given. Is there a way to set max/min number of required arguments?
Is there a way to generate the help screen text on demand? If I find argument errors with my post-parse checking, I'd like to output the same help screen that commandlineparser does. In the 1.9.71 version there was a GetUsage() method to do this.