mpeterv / argparse

Feature-rich command line parser for Lua
MIT License
257 stars 43 forks source link

Support parsing arguments partially #18

Open igorcoding opened 6 years ago

igorcoding commented 6 years ago

It is very useful to parse args partially, like in Python - https://docs.python.org/3/library/argparse.html#partial-parsing

Typical usecase - add additional options, depending on the value of another option.

iridiumlynx commented 6 years ago

igorcoding, there is mutex(...) method for your use-case.

igorcoding commented 6 years ago

How does it solve my use case? My goal is to call parse multiple times, for example

  1. User calls program with arguments ./my_program --template=basic --basic_option1=value1
  2. In lua we define argument --template to argparse
  3. Call a hypothetical parse_known_args to parse only arguments we defined and ignore others (because right now parse() fails if encounters unknown args)
  4. Then depending on value of passed template argument we add additional arguments to argparse, using parser:option("--basic_option1", "Option 1")
  5. And then call parse() again and receiving a complete set of user-specified arguments.

This is also useful with the help messages - collect all arguments and only then display all valid options even if user specified template, i.e. ./my_program --template=basic -h