Open matejak opened 7 years ago
After re-reading, so the only point of ARG_OPTIONAL_BOOL
generating the negating option is overriding a possible previous occurence in the current args?
I can see the code being a bit cleaner using the proposed ARG_OPTIONAL_SWITCH_XXX
behavior, but maybe not that intuitive to use. I would probably expect ARG_OPTIONAL_SWITCH_OFF(no-video, v)
resulting in a _arg_no_video
var.
Good point, (any) code should read like a prose, so letting ARG_OPTIONAL_SWITCH_OFF(video, v)
to create the --no-video
option while saving the result to _arg_video
should do the trick. There could be an option to set the prefix (default would be no-
, people may be interested in disable-
for --disable-video
etc.).
Hello! Is this still in the plans? The milestone is 2.7.0, but 2.8.0 got released a month ago. It's what would make argbash perfect for me.
Hello, yes, it is deffinitelly planned. Stay tuned for updates!
@matejak: Hi, will this issue be resolved? Seems like you got pretty far on your draft. Thanks
It would also be very helpful to have a way to integrate with arithmetic condition (( expression ))
in modern Bash, which returns successfully (status 0) when expression
evaluates to nonzero, or else returns failure (status 1).
Something like ARG_OPTIONAL_BOOL_NUM
, ARG_SWITCH_YES_NUM
, ARG_SWITCH_NO_NUM
would be great.
Here's the behavior of Bash arithmetic conditional construct:
$ if (( 1 )); then echo yes; else echo no; fi
yes
$ if (( 0 )); then echo yes; else echo no; fi
no
$ if (( "" )); then echo yes; else echo no; fi
no
$ if (( )); then echo yes; else echo no; fi
no
$ unset foo; if (( foo )); then echo yes; else echo no; fi
no
$ foo=2; if (( foo )); then echo yes; else echo no; fi
yes
$ foo=2; if (( $foo )); then echo yes; else echo no; fi
yes
$ foo=2; if (( "$foo" )); then echo yes; else echo no; fi
yes
Currently, the
ARG_OPTIONAL_BOOL
does not behave optimally (see #2 ). It seems to be a good idea to have more macros for switch-on, switch-off and both (as the currentARG_OPTIONAL_BOOL
somehow attempts to). Currently,ARG_OPTIONAL_BOOL
assumes that one wants to switch something on (using long and short option) and autogenerating long option to switch something off. This falls on its head when one wants to switch something off. Proposed behavior:ARG_OPTIONAL_BOOL
will remain, it will autodetect whether it is in a switch-on or switch-off mode by examining the default (or the option whether it begins withno-...
, I'm not yet decided). It will use the provided long and short options for the detected mode, but it will also generate a long option for the opposite mode.ARG_OPTIONAL_BOOL(no-video, v)
would make the script accept--no-video
,-v
, that would set_arg_video
(which would beon
by default) tooff
, and--video
, that would set_arg_video
toon
, overriding possible previous occurence of-v
or--no-video
.ARG_OPTIONAL_BOOL(video, v)
would make the script accept--video
,-v
, that would set_arg_video
(which would beoff
by default) toon
, and--no-video
, that would set_arg_video
tooff
, overriding possible previous occurence of-v
or--video
.New macros would be introduced:
ARG_OPTIONAL_SWITCH_ON
will be introduced. It will accept long and short option (and no default sinceoff
will be assumed as default).ARG_OPTIONAL_SWITCH_ON(video, v)
would make the script accept--video
,-v
, that would set_arg_video
(which would beoff
by default) toon
.ARG_OPTIONAL_SWITCH_OFF
will be introduced. It will accept long and short option (and no default sinceon
will be assumed).ARG_OPTIONAL_SWITCH_OFF(no-video, v)
would make the script accept--no-video
,-v
, that would set_arg_video
(which would beon
by default) tooff
. Everybody's comments are highly appreciated!