Re: [PATCH 15/15] scalar: accept -C and -c options before the subcommand
From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2021-08-31 08:34:29
On Mon, Aug 30 2021, Johannes Schindelin via GitGitGadget wrote:
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.