builtin/help.c: add --guide option
[gitweb.git] / builtin / help.c
index 6067a6134b58f2464b243f47112226a0a013f5c4..03d432b19e9740e4e383d8f58136e3428b23d5ec 100644 (file)
@@ -36,10 +36,12 @@ enum help_format {
 static const char *html_path;
 
 static int show_all = 0;
+static int show_guides = 0;
 static unsigned int colopts;
 static enum help_format help_format = HELP_FORMAT_NONE;
 static struct option builtin_help_options[] = {
-       OPT_BOOLEAN('a', "all", &show_all, N_("print all available commands")),
+       OPT_BOOL('a', "all", &show_all, N_("print all available commands")),
+       OPT_BOOL('g', "guides", &show_guides, N_("print list of useful guides")),
        OPT_SET_INT('m', "man", &help_format, N_("show man page"), HELP_FORMAT_MAN),
        OPT_SET_INT('w', "web", &help_format, N_("show manual in web browser"),
                        HELP_FORMAT_WEB),
@@ -49,7 +51,7 @@ static struct option builtin_help_options[] = {
 };
 
 static const char * const builtin_help_usage[] = {
-       N_("git help [--all] [--man|--web|--info] [command]"),
+       N_("git help [--all] [--guides] [--man|--web|--info] [command]"),
        NULL
 };
 
@@ -236,21 +238,21 @@ static int add_man_viewer_cmd(const char *name,
 
 static int add_man_viewer_info(const char *var, const char *value)
 {
-       const char *name = var + 4;
-       const char *subkey = strrchr(name, '.');
+       const char *name, *subkey;
+       int namelen;
 
-       if (!subkey)
+       if (parse_config_key(var, "man", &name, &namelen, &subkey) < 0 || !name)
                return 0;
 
-       if (!strcmp(subkey, ".path")) {
+       if (!strcmp(subkey, "path")) {
                if (!value)
                        return config_error_nonbool(var);
-               return add_man_viewer_path(name, subkey - name, value);
+               return add_man_viewer_path(name, namelen, value);
        }
-       if (!strcmp(subkey, ".cmd")) {
+       if (!strcmp(subkey, "cmd")) {
                if (!value)
                        return config_error_nonbool(var);
-               return add_man_viewer_cmd(name, subkey - name, value);
+               return add_man_viewer_cmd(name, namelen, value);
        }
 
        return 0;
@@ -428,7 +430,17 @@ int cmd_help(int argc, const char **argv, const char *prefix)
                git_config(git_help_config, NULL);
                printf(_("usage: %s%s"), _(git_usage_string), "\n\n");
                list_commands(colopts, &main_cmds, &other_cmds);
+       }
+
+       if (show_guides) {
+               /* do action - next patch */
+       }
+
+       if (show_all || show_guides) {
                printf("%s\n", _(git_more_info_string));
+               /*
+               * We're done. Ignore any remaining args
+               */
                return 0;
        }