]>
Commit | Line | Data |
---|---|---|
28e8f0d5 ÆAB |
1 | #include "test-tool.h" |
2 | #include "cache.h" | |
3 | #include "userdiff.h" | |
4 | #include "config.h" | |
5 | ||
6 | static int driver_cb(struct userdiff_driver *driver, | |
7 | enum userdiff_driver_type type, void *priv) | |
8 | { | |
9 | enum userdiff_driver_type *want_type = priv; | |
10 | if (type & *want_type && driver->funcname.pattern) | |
11 | puts(driver->name); | |
12 | return 0; | |
13 | } | |
14 | ||
5cf88fd8 | 15 | static int cmd__userdiff_config(const char *var, const char *value, void *cb UNUSED) |
28e8f0d5 ÆAB |
16 | { |
17 | if (userdiff_config(var, value) < 0) | |
18 | return -1; | |
19 | return 0; | |
20 | } | |
21 | ||
22 | int cmd__userdiff(int argc, const char **argv) | |
23 | { | |
24 | enum userdiff_driver_type want = 0; | |
25 | if (argc != 2) | |
26 | return 1; | |
27 | ||
28 | if (!strcmp(argv[1], "list-drivers")) | |
29 | want = (USERDIFF_DRIVER_TYPE_BUILTIN | | |
30 | USERDIFF_DRIVER_TYPE_CUSTOM); | |
31 | else if (!strcmp(argv[1], "list-builtin-drivers")) | |
32 | want = USERDIFF_DRIVER_TYPE_BUILTIN; | |
33 | else if (!strcmp(argv[1], "list-custom-drivers")) | |
34 | want = USERDIFF_DRIVER_TYPE_CUSTOM; | |
35 | else | |
36 | return error("unknown argument %s", argv[1]); | |
37 | ||
38 | if (want & USERDIFF_DRIVER_TYPE_CUSTOM) { | |
39 | setup_git_directory(); | |
40 | git_config(cmd__userdiff_config, NULL); | |
41 | } | |
42 | ||
43 | for_each_userdiff_driver(driver_cb, &want); | |
44 | ||
45 | return 0; | |
46 | } |