void list_all_cmds_help(void) { struct string_list others = STRING_LIST_INIT_DUP; struct string_list alias_list = STRING_LIST_INIT_DUP; struct cmdname_help *aliases; int i, longest; printf_ln(_("See 'git help <command>' to read about a specific subcommand")); print_cmd_by_category(main_categories, &longest); list_all_other_cmds(&others); if (others.nr) printf("\n%s\n", _("External commands")); for (i = 0; i < others.nr; i++) printf(" %s\n", others.items[i].string); string_list_clear(&others, 0); git_config(get_alias, &alias_list); string_list_sort(&alias_list); for (i = 0; i < alias_list.nr; i++) { size_t len = strlen(alias_list.items[i].string); if (longest < len) longest = len; } if (alias_list.nr) { printf("\n%s\n", _("Command aliases")); ALLOC_ARRAY(aliases, alias_list.nr + 1); for (i = 0; i < alias_list.nr; i++) { aliases[i].name = alias_list.items[i].string; aliases[i].help = alias_list.items[i].util; aliases[i].category = 1; } aliases[alias_list.nr].name = NULL; print_command_list(aliases, 1, longest); free(aliases); } string_list_clear(&alias_list, 1); }
static int list_cmds(const char *spec) { struct string_list list = STRING_LIST_INIT_DUP; int i; while (*spec) { const char *sep = strchrnul(spec, ','); int len = sep - spec; if (match_token(spec, len, "builtins")) list_builtins(&list, 0); else if (match_token(spec, len, "main")) list_all_main_cmds(&list); else if (match_token(spec, len, "others")) list_all_other_cmds(&list); else if (match_token(spec, len, "nohelpers")) exclude_helpers_from_list(&list); else if (match_token(spec, len, "alias")) list_aliases(&list); else if (match_token(spec, len, "config")) list_cmds_by_config(&list); else if (len > 5 && !strncmp(spec, "list-", 5)) { struct strbuf sb = STRBUF_INIT; strbuf_add(&sb, spec + 5, len - 5); list_cmds_by_category(&list, sb.buf); strbuf_release(&sb); } else die(_("unsupported command listing type '%s'"), spec); spec += len; if (*spec == ',') spec++; } for (i = 0; i < list.nr; i++) puts(list.items[i].string); string_list_clear(&list, 0); return 0; }