|
1 | 1 | m4_define([_COLLECTOR_FEEDBACK], [m4_fatal($@)])
|
2 | 2 |
|
3 | 3 |
|
| 4 | +dnl |
| 5 | +dnl $1: The key |
| 6 | +m4_define([_FORMAT_MISSING_PREFIX], [m4_do( |
| 7 | + [[The prefix for option '$1' has not been found]], |
| 8 | +)]) |
| 9 | + |
| 10 | +dnl |
| 11 | +dnl $1: The argname(i.e. storage key) |
| 12 | +dnl $2: The prefix |
| 13 | +m4_define([STORE_NEGATION_PREFIX], [m4_do( |
| 14 | + [m4_define([_NEG_PREFIX_FOR_$1], [[$2]])], |
| 15 | +)]) |
| 16 | + |
| 17 | + |
| 18 | +dnl |
| 19 | +dnl $1: The argname(i.e. storage key) |
| 20 | +dnl $2: Error-handling callback that is given the error message as the first argument. |
| 21 | +m4_define([GET_NEGATION_PREFIX], [m4_do( |
| 22 | + [m4_ifndef([_NEG_PREFIX_FOR_$1], |
| 23 | + [m4_default([$2], [m4_fatal])([_FORMAT_MISSING_PREFIX([$1])])], |
| 24 | + [m4_quote(m4_indir([_NEG_PREFIX_FOR_$1]))])], |
| 25 | +)]) |
| 26 | + |
| 27 | + |
4 | 28 | dnl
|
5 | 29 | dnl $1: The argument name
|
6 | 30 | dnl $2: The help message
|
@@ -324,13 +348,49 @@ dnl $3: help
|
324 | 348 | dnl $4: default (=off)
|
325 | 349 | argbash_api([ARG_OPTIONAL_BOOLEAN], _CHECK_PASSED_ARGS_COUNT(1, 4)[m4_do(
|
326 | 350 | [[$0($@)]],
|
327 |
| - [m4_ifnblank([$4], [m4_case([$4], [on], , [off], , |
| 351 | + [m4_ifnblank([$4], [m4_case([$4], |
| 352 | + [on], [_ARG_OPTIONAL_SWITCH_ON([$1], [$2], [$3])], |
| 353 | + [off], [_ARG_OPTIONAL_SWITCH_OFF([$1], [$2], [$3])], |
328 | 354 | [_COLLECTOR_FEEDBACK([Problem with argument '$1': Only 'on' or 'off' are allowed as boolean defaults, you have specified '$4'.])])])],
|
329 | 355 | [_ADD_OPTIONAL_ARGUMENT_IF_POSSIBLE([$1], [$2], [$3],
|
330 | 356 | m4_default_quoted([$4], [off]), [bool])],
|
331 | 357 | )])
|
332 | 358 |
|
333 | 359 |
|
| 360 | +dnl $1: long name, var suffix (translit of [-] -> _) |
| 361 | +dnl $2: short name (opt) |
| 362 | +dnl $3: help |
| 363 | +argbash_api([ARG_OPTIONAL_SWITCH_ON], _CHECK_PASSED_ARGS_COUNT(1, 3)[m4_do( |
| 364 | + [[$0($@)]], |
| 365 | + [_ARG_OPTIONAL_SWITCH_ON($@)], |
| 366 | +)]) |
| 367 | + |
| 368 | + |
| 369 | +m4_define([_ARG_OPTIONAL_SWITCH_ON], _CHECK_PASSED_ARGS_COUNT(1, 3)[m4_do( |
| 370 | + [_ADD_OPTIONAL_ARGUMENT_IF_POSSIBLE([$1], [$2], [$3], [off], [bool])], |
| 371 | +)]) |
| 372 | + |
| 373 | + |
| 374 | +m4_define([_DEFAULT_NEGATION_PREFIX], [[no-]]) |
| 375 | + |
| 376 | +m4_define([ARG_SET_DEFAULT_NEGATION_PREFIX], [m4_define([_DEFAULT_NEGATION_PREFIX], [[$1]])]) |
| 377 | + |
| 378 | +dnl $1: long name, var suffix (translit of [-] -> _) |
| 379 | +dnl $2: short name (opt) |
| 380 | +dnl $3: help |
| 381 | +dnl $4: the negation prefix (=no-, resulting in i.e. --no-video) |
| 382 | +argbash_api([ARG_OPTIONAL_SWITCH_OFF], _CHECK_PASSED_ARGS_COUNT(1, 4)[m4_do( |
| 383 | + [[$0($@)]], |
| 384 | + [_ARG_OPTIONAL_SWITCH_OFF($@)], |
| 385 | +)]) |
| 386 | + |
| 387 | + |
| 388 | +m4_define([_ARG_OPTIONAL_SWITCH_OFF], _CHECK_PASSED_ARGS_COUNT(1, 4)[m4_do( |
| 389 | + [STORE_NEGATION_PREFIX([$1], m4_default_quoted([$4], _DEFAULT_NEGATION_PREFIX))], |
| 390 | + [_ADD_OPTIONAL_ARGUMENT_IF_POSSIBLE([$1], [$2], [$3], [on], [bool])], |
| 391 | +)]) |
| 392 | + |
| 393 | + |
334 | 394 | m4_define([_ARG_OPTIONAL_ACTION],
|
335 | 395 | [_ADD_OPTIONAL_ARGUMENT_IF_POSSIBLE([$1], [$2], [$3], [$4], [action])])
|
336 | 396 |
|
|
0 commit comments