scalar: implement the run
command
Note: this subcommand is provided primarily for backwards-compatibility, for existing Scalar uses. It is mostly just a shim for `git maintenance`, mapping task names from the way Scalar called them to the way Git calls them. The reason why those names differ? The background maintenance was first implemented in Scalar, and when it was contributed as a patch series implementing the `git maintenance` command, reviewers suggested better names, those suggestions were accepted before the patches were integrated into core Git. Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
4368e40bef
commit
7020c88c30
@ -484,6 +484,69 @@ static int cmd_register(int argc, const char **argv)
|
||||
return register_dir();
|
||||
}
|
||||
|
||||
static int cmd_run(int argc, const char **argv)
|
||||
{
|
||||
struct option options[] = {
|
||||
OPT_END(),
|
||||
};
|
||||
struct {
|
||||
const char *arg, *task;
|
||||
} tasks[] = {
|
||||
{ "config", NULL },
|
||||
{ "commit-graph", "commit-graph" },
|
||||
{ "fetch", "prefetch" },
|
||||
{ "loose-objects", "loose-objects" },
|
||||
{ "pack-files", "incremental-repack" },
|
||||
{ NULL, NULL }
|
||||
};
|
||||
struct strbuf buf = STRBUF_INIT;
|
||||
const char *usagestr[] = { NULL, NULL };
|
||||
int i;
|
||||
|
||||
strbuf_addstr(&buf, N_("scalar run <task> [<enlistment>]\nTasks:\n"));
|
||||
for (i = 0; tasks[i].arg; i++)
|
||||
strbuf_addf(&buf, "\t%s\n", tasks[i].arg);
|
||||
usagestr[0] = buf.buf;
|
||||
|
||||
argc = parse_options(argc, argv, NULL, options,
|
||||
usagestr, 0);
|
||||
|
||||
if (!argc)
|
||||
usage_with_options(usagestr, options);
|
||||
|
||||
if (!strcmp("all", argv[0])) {
|
||||
i = -1;
|
||||
} else {
|
||||
for (i = 0; tasks[i].arg && strcmp(tasks[i].arg, argv[0]); i++)
|
||||
; /* keep looking for the task */
|
||||
|
||||
if (i > 0 && !tasks[i].arg) {
|
||||
error(_("no such task: '%s'"), argv[0]);
|
||||
usage_with_options(usagestr, options);
|
||||
}
|
||||
}
|
||||
|
||||
argc--;
|
||||
argv++;
|
||||
setup_enlistment_directory(argc, argv, usagestr, options, NULL);
|
||||
strbuf_release(&buf);
|
||||
|
||||
if (i == 0)
|
||||
return register_dir();
|
||||
|
||||
if (i > 0)
|
||||
return run_git("maintenance", "run",
|
||||
"--task", tasks[i].task, NULL);
|
||||
|
||||
if (register_dir())
|
||||
return -1;
|
||||
for (i = 1; tasks[i].arg; i++)
|
||||
if (run_git("maintenance", "run",
|
||||
"--task", tasks[i].task, NULL))
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int remove_deleted_enlistment(struct strbuf *path)
|
||||
{
|
||||
int res = 0;
|
||||
@ -556,6 +619,7 @@ static struct {
|
||||
{ "list", cmd_list },
|
||||
{ "register", cmd_register },
|
||||
{ "unregister", cmd_unregister },
|
||||
{ "run", cmd_run },
|
||||
{ NULL, NULL},
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user