]>
Commit | Line | Data |
---|---|---|
b6188213 | 1 | #include "test-tool.h" |
959b5455 | 2 | #include "cache.h" |
b2141fc1 | 3 | #include "config.h" |
959b5455 | 4 | #include "submodule-config.h" |
851e18c3 | 5 | #include "submodule.h" |
959b5455 | 6 | |
3f2e2297 | 7 | static void die_usage(int argc, const char **argv, const char *msg) |
959b5455 HV |
8 | { |
9 | fprintf(stderr, "%s\n", msg); | |
10 | fprintf(stderr, "Usage: %s [<commit> <submodulepath>] ...\n", argv[0]); | |
11 | exit(1); | |
12 | } | |
13 | ||
b6188213 | 14 | int cmd__submodule_config(int argc, const char **argv) |
959b5455 | 15 | { |
3f2e2297 | 16 | const char **arg = argv; |
959b5455 HV |
17 | int my_argc = argc; |
18 | int output_url = 0; | |
19 | int lookup_name = 0; | |
20 | ||
21 | arg++; | |
22 | my_argc--; | |
55cbe18e | 23 | while (arg[0] && starts_with(arg[0], "--")) { |
959b5455 HV |
24 | if (!strcmp(arg[0], "--url")) |
25 | output_url = 1; | |
26 | if (!strcmp(arg[0], "--name")) | |
27 | lookup_name = 1; | |
28 | arg++; | |
29 | my_argc--; | |
30 | } | |
31 | ||
32 | if (my_argc % 2 != 0) | |
33 | die_usage(argc, argv, "Wrong number of arguments."); | |
34 | ||
851e18c3 | 35 | setup_git_directory(); |
851e18c3 | 36 | |
959b5455 | 37 | while (*arg) { |
cd73de47 | 38 | struct object_id commit_oid; |
959b5455 HV |
39 | const struct submodule *submodule; |
40 | const char *commit; | |
41 | const char *path_or_name; | |
42 | ||
43 | commit = arg[0]; | |
44 | path_or_name = arg[1]; | |
45 | ||
46 | if (commit[0] == '\0') | |
cd73de47 | 47 | oidclr(&commit_oid); |
48 | else if (get_oid(commit, &commit_oid) < 0) | |
959b5455 HV |
49 | die_usage(argc, argv, "Commit not found."); |
50 | ||
51 | if (lookup_name) { | |
3b8fb393 SB |
52 | submodule = submodule_from_name(the_repository, |
53 | &commit_oid, path_or_name); | |
959b5455 | 54 | } else |
3b8fb393 SB |
55 | submodule = submodule_from_path(the_repository, |
56 | &commit_oid, path_or_name); | |
959b5455 HV |
57 | if (!submodule) |
58 | die_usage(argc, argv, "Submodule not found."); | |
59 | ||
60 | if (output_url) | |
61 | printf("Submodule url: '%s' for path '%s'\n", | |
62 | submodule->url, submodule->path); | |
63 | else | |
64 | printf("Submodule name: '%s' for path '%s'\n", | |
65 | submodule->name, submodule->path); | |
66 | ||
67 | arg += 2; | |
68 | } | |
69 | ||
f793b895 | 70 | submodule_free(the_repository); |
959b5455 HV |
71 | |
72 | return 0; | |
73 | } |