submodule: implement a config API for lookup of .gitmodules values
[git] / test-submodule-config.c
1 #include "cache.h"
2 #include "submodule-config.h"
3
4 static void die_usage(int argc, char **argv, const char *msg)
5 {
6         fprintf(stderr, "%s\n", msg);
7         fprintf(stderr, "Usage: %s [<commit> <submodulepath>] ...\n", argv[0]);
8         exit(1);
9 }
10
11 int main(int argc, char **argv)
12 {
13         char **arg = argv;
14         int my_argc = argc;
15         int output_url = 0;
16         int lookup_name = 0;
17
18         arg++;
19         my_argc--;
20         while (starts_with(arg[0], "--")) {
21                 if (!strcmp(arg[0], "--url"))
22                         output_url = 1;
23                 if (!strcmp(arg[0], "--name"))
24                         lookup_name = 1;
25                 arg++;
26                 my_argc--;
27         }
28
29         if (my_argc % 2 != 0)
30                 die_usage(argc, argv, "Wrong number of arguments.");
31
32         while (*arg) {
33                 unsigned char commit_sha1[20];
34                 const struct submodule *submodule;
35                 const char *commit;
36                 const char *path_or_name;
37
38                 commit = arg[0];
39                 path_or_name = arg[1];
40
41                 if (commit[0] == '\0')
42                         hashcpy(commit_sha1, null_sha1);
43                 else if (get_sha1(commit, commit_sha1) < 0)
44                         die_usage(argc, argv, "Commit not found.");
45
46                 if (lookup_name) {
47                         submodule = submodule_from_name(commit_sha1, path_or_name);
48                 } else
49                         submodule = submodule_from_path(commit_sha1, path_or_name);
50                 if (!submodule)
51                         die_usage(argc, argv, "Submodule not found.");
52
53                 if (output_url)
54                         printf("Submodule url: '%s' for path '%s'\n",
55                                         submodule->url, submodule->path);
56                 else
57                         printf("Submodule name: '%s' for path '%s'\n",
58                                         submodule->name, submodule->path);
59
60                 arg += 2;
61         }
62
63         submodule_free();
64
65         return 0;
66 }