parse-options API: remove OPTION_ARGUMENT feature
commit4c25356e0edaa92e21aadb67579a0263019fbdc4
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Mon, 13 Sep 2021 03:35:40 +0000 (13 05:35 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 13 Sep 2021 06:27:38 +0000 (12 23:27 -0700)
tree7806dc594e1aff24623f14887d62c9a1559743dd
parentcc5b594788c3fc89ab5e84de2d657ddf36409821
parse-options API: remove OPTION_ARGUMENT feature

As was noted in 1a85b49b87a (parse-options: make OPT_ARGUMENT() more
useful, 2019-03-14) there's only ever been one user of the
OPT_ARGUMENT(), that user was added in 20de316e334 (difftool: allow
running outside Git worktrees with --no-index, 2019-03-14).

The OPT_ARGUMENT() feature itself was added way back in
580d5bffdea (parse-options: new option type to treat an option-like
parameter as an argument., 2008-03-02), but as discussed in
1a85b49b87a wasn't used until 20de316e334 in 2019.

Now that the preceding commit has migrated this code over to using
"struct strvec" to manage the "args" member of a "struct
child_process", we can just use that directly instead of relying on
OPT_ARGUMENT.

This has a minor change in behavior in that if we'll pass --no-index
we'll now always pass it as the first argument, before we'd pass it in
whatever position the caller did. Preserving this was the real value
of OPT_ARGUMENT(), but as it turns out we didn't need that either. We
can always inject it as the first argument, the other end will parse
it just the same.

Note that we cannot remove the "out" and "cpidx" members of "struct
parse_opt_ctx_t" added in 580d5bffdea, while they were introduced with
OPT_ARGUMENT() we since used them for other things.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/technical/api-parse-options.txt
builtin/difftool.c
parse-options.c
parse-options.h
t/helper/test-parse-options.c
t/t0040-parse-options.sh