carlobaldassi / ArgParse.jl

Package for parsing command-line arguments to Julia programs.
Other
236 stars 36 forks source link

Allow unrecognized options to be ignored #114

Open johnomotani opened 3 years ago

johnomotani commented 3 years ago

Adds a new member/argument ignore_unrecognized_opts to ArgParseSettings. When this is set to true (default is false, which keeps the existing behaviour), instead of throwing an error for unrecognized options, just skip them.

The use case I have that motivated this is that I want to have separate ArgParse instances in different places in my code (one for all the time, another just for tests), which should ignore each others options.

ignore_unrecognized_options = true is not compatible with positional arguments, because there might be an ambiguity about whether arguments following the unrecognized option should belong to the option or the positional argument. It's possibly some cases could be handled (I haven't thought hard about it), but it seemed simplest to just error if there are any positional arguements - someone who wants a particular case to be handled more intelligently can implement the logic!

The first commit adds some tests that errors are actually produced when an unrecognized option is passed - it might be worth cherry-picking that even if this feature is not wanted for some reason.