Re: [PATCH 15/15] scalar: accept -C and -c options before the subcommand
- From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- Date
- Aug 31, 2021, 08:32 UTC
- Message-ID
- <871r6axban.fsf@evledraar.gmail.com>
- In-Reply-To
- <6455b18f1b623032b9066c1730dee045fbe7a3f3.1630359290.git.gitgitgadget@gmail.com>
On Mon, Aug 30 2021, Johannes Schindelin via GitGitGadget wrote:
Show 29 quoted lines
> The `git` executable has these two very useful options:
>
> -C <directory>:
> switch to the specified directory before performing any actions
>
> -c <key>=<value>:
> temporarily configure this setting for the duration of the
> specified scalar subcommand
>
> With this commit, we teach the `scalar` executable the same trick.
> [...]
> + while (argc > 1 && *argv[1] == '-') {
> + if (!strcmp(argv[1], "-C")) {
> + if (argc < 3)
> + die(_("-C requires a <directory>"));
> + if (chdir(argv[2]) < 0)
> + die_errno(_("could not change to '%s'"),
> + argv[2]);
> + argc -= 2;
> + argv += 2;
> + } else if (!strcmp(argv[1], "-c")) {
> + if (argc < 3)
> + die(_("-c requires a <key>=<value> argument"));
> + git_config_push_parameter(argv[2]);
> + argc -= 2;
> + argv += 2;
> + } else
> + break;
> + }This along with my earlier comment about the Makefile copy/pasting makes me wonder if an easier way to integrate this wouldn't be to refactor git.c a bit to have it understand either "git" or "scalar", then instead of "ls-tree" etc. as "git" the subcommands would become "built-ins".
Which would give us both "[git|scalar] [-c ...] <cmd>" for free, and elimante the need for the inevetable future divergence of wanting -p, -P, --exec-path etc. in both.