On Wednesday, 9 March 2016 at 18:56:10 UTC, Markus Laker wrote:
To support git-style syntax while using Argon, I'd do this:

1. Find the (possibly empty) initial sequence of tokens that start with a dash. Pass them to an Argon-derived class which we'll call `Stem', which parses them.

2. If no more tokens exist (as in "my-command --help"), do what we can with the options we've seen, and then exit.

3. Otherwise, the next token must be a subcommand name: we've seen something "my-command --verbose display-widgets --paginate". Use that token to select a leaf class, also derived from Argon. There's one leaf class per subcommand.

4. Pass the remaining tokens (in this example, just "--paginate") to the selected leaf pass for parsing. Also pass a reference to Stem, so that the leaf code can use any options garnered by Stem.

It is a wrong way, because switches may have arguments (not starting with a dash).

I am now considering to write a new object-oriented command line parser from scratch because it is sometimes easier to write new code than to understand other's one.

It shouldn't be hard to write some reusable code to do this, if it were a common requirement.

Reply via email to