add_option() (and make_option()) now support the following new actions (#22):
action = "append" which appends each occurrence's value to default.action = "append_const" which appends const to default each time the flag is seen.action = "count", which counts the number of times a flag is seen and adds it to default (treated as 0L if not supplied). Returns NULL if the flag is never seen and no default was supplied.action = "store_const" which stores const when the flag is seen.add_option() (and make_option()) now support a const parameter (intended for new actions "append_const" and "store_const").
Several new classed errors are now thrown, mirroring Python's optparse exception hierarchy:
optparse_option_error: invalid option definition in make_option() or add_option().
optparse_option_conflict_error: duplicate flag in OptionParser() or add_option().optparse_parse_error: existing base class for all parse-time errors from parse_args().
optparse_bad_option_error: unrecognized, misused, or argument-requiring option.
optparse_ambiguous_option_error: ambiguous abbreviated long flag.optparse_bad_positional_arguments_error: wrong number of positional arguments supplied.optparse_missing_required_error: a required option was not supplied.add_option() (and make_option()) now allow non-letter characters in short flags (e.g., -1) and at the beginning of long flags (e.g., --1flag), following Python's optparse convention. However long and short flags may not contain = or whitespace (or begin with hyphens).
add_option() (and make_option()) now support a required argument.
If TRUE, parse_args() will throw an error if the option is not provided on the command line (#17).
parse_args() (and parse_args2()) now correctly handle a bare -- separator: all arguments after -- are treated as positional arguments rather than options.parse_args() (and parse_args2()) now support abbreviated long flags (e.g. --verb matching --verbose) when positional_arguments is not FALSE. Previously abbreviations were only supported when positional_arguments = FALSE.make_option() now throws a classed optparse_option_error for invalid action or type arguments instead of a confusing error later at parse time.OptionParser() now also checks the LITTLER_SCRIPT_PATH environment variable for the script name when performing %prog on the usage argument so it works when called from littler.default to match that of
its type argument when action = "callback".
Thanks husheng (@hs3434) for bug report (#47).DESCRIPTION to suppress new CRAN check NOTE (#43).The errors raised by parse_args() (and parse_args2()) are now of class "optparse_parse_error".
When interactive() is FALSE we now print out a usage string followed by
a (less verbose) error message.
Throws a more informative error message for unknown short flags when positional_arguments=TRUE.
Thanks Greg Minshall for bug report (#42).
formatter argument to OptionParser() for a function to format the usage message (#30).
By default uses the new function IndentedHelpFormatter().
{optparse} also provides the new function TitledHelpFormatter().
Thanks Ni Huang for suggestion.positional_arguments=TRUE.
Thanks Greg Minshall for bug report (#34).callback parameter of add_option / make_option is not NULL then
the default of action is now "callback". Thanks Greg Minshall for suggestion (#35).action=="callback" in the man page for add_option and make_option.
Thanks Greg Minshall for bug report (#35).action=="callback" when metavar==NULL (#29).
Thanks Ni Huang for bug report.action=="callback" and positional_argument==TRUE (#28).
Thanks Ni Huang for bug report.interactive() == FALSE and print_help_and_exit == TRUE then
optparse will now call quit(status=0) instead of quit(status=1) after
printing the help message (this matches behaviour of the python package).add_help_option=FALSE when
defining an -h or --help flag. Thanks Jeff P. Bruce for bug report.getopt requirement so that empty strings are parsed correctly.
Thanks Matthew Flickinger for bug report.add_help_option in OptionParser set to FALSE. Thanks to Jeff Bruce for bug report.parse_args now supports convert_hyphens_to_underscores argument which converts any hyphens to underscores
when returning the list of optionsparse_args2 which wraps parse_args with positional_arguments set to TRUE
and convert_hyphens_to_underscores set to TRUE.optparse should no longer give any warnings when options(warnPartialMatchArgs=TRUE). Thanks Rich FitzJohn for patch.print_help no longer throws an error if we have a default argument of length zero. Thanks Benjamin Tyner for bug report.OptionParser and OptionParserOption S4 classes are now exported. Thanks Peter Humburg for patch.positional_arguments of function parse_args now accepts one
or two numeric values that denote the minimum and maximum number of supported
positional arguments.
Thanks Kirill Müller for patch.interactive() == TRUE then parse_args will no longer quit(status=1)
after printing a help message but will instead throw an error.
optparse will continue to quit(status=1) after printing a help message
for non-interactive Rscripts unless print_help_and_exit == FALSE.make_option argument type="numeric" automatically cast to double.
Previously users might have received an error passing negative numbers if they
accidentally specified "numeric" instead of "double".parse_args when we have options with no short flag and positional_arguments=TRUE.
Thanks Miroslav Posta for bug report.description and epilogue arguments to OptionParser to allow
users to add more information to generated help messages