Browse Source

parseopt: add OPT_NOOP_NOARG

Add OPT_NOOP_NOARG, a helper macro to define deprecated options in a
standard way.  The help text is taken from the no-op option -r of
git revert.

The callback could be made to emit a (conditional?) warning later.  And
we could also add OPT_NOOP (requiring an argument) etc. as needed.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
René Scharfe 14 years ago committed by Junio C Hamano
parent
commit
6acec0380b
  1. 5
      Documentation/technical/api-parse-options.txt
  2. 5
      parse-options-cb.c
  3. 6
      parse-options.h
  4. 2
      t/t0040-parse-options.sh
  5. 1
      test-parse-options.c

5
Documentation/technical/api-parse-options.txt

@ -204,6 +204,11 @@ There are some macros to easily define options: @@ -204,6 +204,11 @@ There are some macros to easily define options:
"auto", set `int_var` to 1 if stdout is a tty or a pager,
0 otherwise.

`OPT_NOOP_NOARG(short, long)`::
Introduce an option that has no effect and takes no arguments.
Use it to hide deprecated options that are still to be recognized
and ignored silently.


The last element of the array must be `OPT_END()`.


5
parse-options-cb.c

@ -123,3 +123,8 @@ int parse_opt_string_list(const struct option *opt, const char *arg, int unset) @@ -123,3 +123,8 @@ int parse_opt_string_list(const struct option *opt, const char *arg, int unset)
string_list_append(v, xstrdup(arg));
return 0;
}

int parse_opt_noop_cb(const struct option *opt, const char *arg, int unset)
{
return 0;
}

6
parse-options.h

@ -153,6 +153,11 @@ struct option { @@ -153,6 +153,11 @@ struct option {
{ OPTION_CALLBACK, (s), (l), (v), "when", (h), PARSE_OPT_OPTARG, \
parse_opt_color_flag_cb, (intptr_t)"always" }

#define OPT_NOOP_NOARG(s, l) \
{ OPTION_CALLBACK, (s), (l), NULL, NULL, \
"no-op (backward compatibility)", \
PARSE_OPT_HIDDEN | PARSE_OPT_NOARG, parse_opt_noop_cb }

/* Deprecated synonym */
#define OPT_BOOLEAN OPT_COUNTUP

@ -216,6 +221,7 @@ extern int parse_opt_verbosity_cb(const struct option *, const char *, int); @@ -216,6 +221,7 @@ extern int parse_opt_verbosity_cb(const struct option *, const char *, int);
extern int parse_opt_with_commit(const struct option *, const char *, int);
extern int parse_opt_tertiary(const struct option *, const char *, int);
extern int parse_opt_string_list(const struct option *, const char *, int);
extern int parse_opt_noop_cb(const struct option *, const char *, int);

#define OPT__VERBOSE(var, h) OPT_BOOLEAN('v', "verbose", (var), (h))
#define OPT__QUIET(var, h) OPT_BOOLEAN('q', "quiet", (var), (h))

2
t/t0040-parse-options.sh

@ -87,7 +87,7 @@ EOF @@ -87,7 +87,7 @@ EOF
test_expect_success 'long options' '
test-parse-options --boolean --integer 1729 --boolean --string2=321 \
--verbose --verbose --no-dry-run --abbrev=10 --file fi.le\
> output 2> output.err &&
--obsolete > output 2> output.err &&
test ! -s output.err &&
test_cmp expect output
'

1
test-parse-options.c

@ -54,6 +54,7 @@ int main(int argc, const char **argv) @@ -54,6 +54,7 @@ int main(int argc, const char **argv)
OPT_STRING(0, "string2", &string, "str", "get another string"),
OPT_STRING(0, "st", &string, "st", "get another string (pervert ordering)"),
OPT_STRING('o', NULL, &string, "str", "get another string"),
OPT_NOOP_NOARG(0, "obsolete"),
OPT_SET_PTR(0, "default-string", &string,
"set string to default", (unsigned long)"default"),
OPT_STRING_LIST(0, "list", &list, "str", "add str to list"),

Loading…
Cancel
Save