@@ -728,6 +728,47 @@ static int maintenance_task_gc(struct maintenance_run_opts *opts)
return run_command(&child);
}
+typedef int maintenance_task_fn(struct maintenance_run_opts *opts);
+
+struct maintenance_task {
+ const char *name;
+ maintenance_task_fn *fn;
+ unsigned enabled:1;
+};
+
+enum maintenance_task_label {
+ TASK_GC,
+
+ /* Leave as final value */
+ TASK__COUNT
+};
+
+static struct maintenance_task tasks[] = {
+ [TASK_GC] = {
+ "gc",
+ maintenance_task_gc,
+ 1,
+ },
+};
+
+static int maintenance_run_tasks(struct maintenance_run_opts *opts)
+{
+ int i;
+ int result = 0;
+
+ for (i = 0; i < TASK__COUNT; i++) {
+ if (!tasks[i].enabled)
+ continue;
+
+ if (tasks[i].fn(opts)) {
+ error(_("task '%s' failed"), tasks[i].name);
+ result = 1;
+ }
+ }
+
+ return result;
+}
+
static int maintenance_run(int argc, const char **argv, const char *prefix)
{
struct maintenance_run_opts opts;
@@ -750,7 +791,7 @@ static int maintenance_run(int argc, const char **argv, const char *prefix)
if (argc != 0)
usage_with_options(builtin_maintenance_run_usage,
builtin_maintenance_run_options);
- return maintenance_task_gc(&opts);
+ return maintenance_run_tasks(&opts);
}
static const char builtin_maintenance_usage[] = N_("git maintenance run [<options>]");