[PATCH 0/2] cli: Parsing. Add option NOTMUCH_OPT_INT_OR_BOOLEAN

Jani Nikula jani at nikula.org
Thu Mar 8 16:48:35 PST 2012


On Thu,  8 Mar 2012 22:15:42 +0000, Mark Walters <markwalters1009 at gmail.com> wrote:
> The first patch adds a new command line parsing option
> NOTMUCH_OPT_INT_OR_BOOLEAN for command line parsing which accepts
> --verbose=3 and --verbose with the latter setting verbose to 1. It
> also allows --verbose=0 so (with a little caller support) the user can
> turn off boolean options.
> 
> It also means that extra options can be added to the command line
> programs in a backwards compatible manner (e.g. if --verbose already
> exists we could add --verbose=2).
> 
> The second patch uses this to make the --entire-thread option to
> notmuch-show a NOTMUCH_OPT_INT_OR_BOOLEAN. In particular this allows
> the caller to disable --entire-thread (with --entire-thread=0) when
> format=json.

I'm afraid I find both of the patches a bit hacky. The first because
it's more about optional arguments to options than int-or-bool. The
second because it's more about detecting whether the user has provided
an option than int-or-bool.

For booleans, I think the notmuch style would be to allow --foo=true and
--foo=false in addition to just --foo (which implies true) so you could
also disable booleans. I think this would be fairly simple to implement,
and would require no changes to option parser users.

With --entire-thread the bigger problem is detecting whether the option
was specified by the user or not. It would be great if the option parser
could provide this information, but it might take a while to get
there... In the mean time, I think I would rather see a well commented
local hack here initializing the notmuch_bool_t params.entire_thread to
-1, and changing it to TRUE or FALSE if not already done so by
parse_arguments().


BR,
Jani.


> 
> Best wishes
> 
> Mark
> 
> Mark Walters (2):
>   cli: Parsing. Add option NOTMUCH_OPT_INT_OR_BOOLEAN
>   cli: make --entire-thread option notmuch-show.c INT_OR_BOOLEAN
> 
>  command-line-arguments.c |   29 +++++++++++++++++++++++++++--
>  command-line-arguments.h |    3 +++
>  notmuch-show.c           |   10 ++++++++--
>  3 files changed, 38 insertions(+), 4 deletions(-)
> 
> -- 
> 1.7.9.1
> 
> _______________________________________________
> notmuch mailing list
> notmuch at notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch


More information about the notmuch mailing list