| #define USE_THE_REPOSITORY_VARIABLE | |
| #include "test-tool.h" | |
| #include "setup.h" | |
| #include "userdiff.h" | |
| #include "config.h" | |
| static int driver_cb(struct userdiff_driver *driver, | |
| enum userdiff_driver_type type, void *priv) | |
| { | |
| enum userdiff_driver_type *want_type = priv; | |
| if (type & *want_type && driver->funcname.pattern) | |
| puts(driver->name); | |
| return 0; | |
| } | |
| static int cmd__userdiff_config(const char *var, const char *value, | |
| const struct config_context *ctx UNUSED, | |
| void *cb UNUSED) | |
| { | |
| if (userdiff_config(var, value) < 0) | |
| return -1; | |
| return 0; | |
| } | |
| int cmd__userdiff(int argc, const char **argv) | |
| { | |
| enum userdiff_driver_type want = 0; | |
| if (argc != 2) | |
| return 1; | |
| if (!strcmp(argv[1], "list-drivers")) | |
| want = (USERDIFF_DRIVER_TYPE_BUILTIN | | |
| USERDIFF_DRIVER_TYPE_CUSTOM); | |
| else if (!strcmp(argv[1], "list-builtin-drivers")) | |
| want = USERDIFF_DRIVER_TYPE_BUILTIN; | |
| else if (!strcmp(argv[1], "list-custom-drivers")) | |
| want = USERDIFF_DRIVER_TYPE_CUSTOM; | |
| else | |
| return error("unknown argument %s", argv[1]); | |
| if (want & USERDIFF_DRIVER_TYPE_CUSTOM) { | |
| setup_git_directory(the_repository); | |
| repo_config(the_repository, cmd__userdiff_config, NULL); | |
| } | |
| for_each_userdiff_driver(driver_cb, &want); | |
| return 0; | |
| } |