Miklos Vajna | 940208a | 2008-07-30 01:16:58 +0200 | [diff] [blame] | 1 | #ifndef HELP_H |
| 2 | #define HELP_H |
| 3 | |
Nguyễn Thái Ngọc Duy | 3ac68a9 | 2018-05-26 15:55:24 +0200 | [diff] [blame] | 4 | #include "string-list.h" |
| 5 | #include "strbuf.h" |
Nguyễn Thái Ngọc Duy | 6bb2dc0 | 2018-05-20 20:39:59 +0200 | [diff] [blame] | 6 | |
Miklos Vajna | 940208a | 2008-07-30 01:16:58 +0200 | [diff] [blame] | 7 | struct cmdnames { |
| 8 | int alloc; |
| 9 | int cnt; |
| 10 | struct cmdname { |
Johannes Schindelin | 8af84da | 2008-08-31 15:50:23 +0200 | [diff] [blame] | 11 | size_t len; /* also used for similarity index in help.c */ |
Miklos Vajna | 940208a | 2008-07-30 01:16:58 +0200 | [diff] [blame] | 12 | char name[FLEX_ARRAY]; |
| 13 | } **names; |
| 14 | }; |
| 15 | |
Miklos Vajna | 3d78d1f | 2008-08-02 10:08:38 +0200 | [diff] [blame] | 16 | static inline void mput_char(char c, unsigned int num) |
| 17 | { |
Johannes Schindelin | 5acea87 | 2018-12-11 06:58:10 -0800 | [diff] [blame] | 18 | while (num--) |
Miklos Vajna | 3d78d1f | 2008-08-02 10:08:38 +0200 | [diff] [blame] | 19 | putchar(c); |
| 20 | } |
| 21 | |
Denton Liu | 5545442 | 2019-04-29 04:28:14 -0400 | [diff] [blame] | 22 | void list_common_cmds_help(void); |
Ævar Arnfjörð Bjarmason | 1ce5901 | 2022-02-21 20:38:51 +0100 | [diff] [blame] | 23 | void list_all_cmds_help(int show_external_commands, int show_aliases); |
Philippe Blain | 0371a76 | 2020-08-05 01:19:05 +0000 | [diff] [blame] | 24 | void list_guides_help(void); |
Ævar Arnfjörð Bjarmason | d976c51 | 2022-08-04 18:28:33 +0200 | [diff] [blame] | 25 | void list_user_interfaces_help(void); |
Ævar Arnfjörð Bjarmason | 844739b | 2022-08-04 18:28:34 +0200 | [diff] [blame] | 26 | void list_developer_interfaces_help(void); |
Nguyễn Thái Ngọc Duy | 63eae83 | 2018-05-20 20:40:01 +0200 | [diff] [blame] | 27 | |
Denton Liu | 5545442 | 2019-04-29 04:28:14 -0400 | [diff] [blame] | 28 | void list_all_main_cmds(struct string_list *list); |
| 29 | void list_all_other_cmds(struct string_list *list); |
| 30 | void list_cmds_by_category(struct string_list *list, |
Denton Liu | ad6dad0 | 2019-04-29 04:28:23 -0400 | [diff] [blame] | 31 | const char *category); |
Denton Liu | 5545442 | 2019-04-29 04:28:14 -0400 | [diff] [blame] | 32 | void list_cmds_by_config(struct string_list *list); |
| 33 | const char *help_unknown_cmd(const char *cmd); |
| 34 | void load_command_list(const char *prefix, |
Denton Liu | ad6dad0 | 2019-04-29 04:28:23 -0400 | [diff] [blame] | 35 | struct cmdnames *main_cmds, |
| 36 | struct cmdnames *other_cmds); |
Johannes Schindelin | 722fc37 | 2020-10-07 21:56:51 +0000 | [diff] [blame] | 37 | void load_builtin_commands(const char *prefix, struct cmdnames *cmds); |
Denton Liu | 5545442 | 2019-04-29 04:28:14 -0400 | [diff] [blame] | 38 | void add_cmdname(struct cmdnames *cmds, const char *name, int len); |
Miklos Vajna | 940208a | 2008-07-30 01:16:58 +0200 | [diff] [blame] | 39 | /* Here we require that excludes is a sorted list. */ |
Denton Liu | 5545442 | 2019-04-29 04:28:14 -0400 | [diff] [blame] | 40 | void exclude_cmds(struct cmdnames *cmds, struct cmdnames *excludes); |
| 41 | int is_in_cmdlist(struct cmdnames *cmds, const char *name); |
Ævar Arnfjörð Bjarmason | 06fa4db | 2021-09-22 00:40:39 +0200 | [diff] [blame] | 42 | void list_commands(struct cmdnames *main_cmds, struct cmdnames *other_cmds); |
Emily Shaffer | 617d571 | 2020-04-16 14:18:05 -0700 | [diff] [blame] | 43 | void get_version_info(struct strbuf *buf, int show_build_options); |
Miklos Vajna | 940208a | 2008-07-30 01:16:58 +0200 | [diff] [blame] | 44 | |
Vikrant Varma | e561810 | 2013-05-04 05:34:19 +0530 | [diff] [blame] | 45 | /* |
| 46 | * call this to die(), when it is suspected that the user mistyped a |
| 47 | * ref to the command, to give suggested "correct" refs. |
| 48 | */ |
René Scharfe | 80e3658 | 2019-08-29 21:13:16 +0200 | [diff] [blame] | 49 | NORETURN void help_unknown_ref(const char *ref, const char *cmd, const char *error); |
Nguyễn Thái Ngọc Duy | 3ac68a9 | 2018-05-26 15:55:24 +0200 | [diff] [blame] | 50 | |
| 51 | static inline void list_config_item(struct string_list *list, |
| 52 | const char *prefix, |
| 53 | const char *str) |
| 54 | { |
| 55 | string_list_append_nodup(list, xstrfmt("%s.%s", prefix, str)); |
| 56 | } |
| 57 | |
| 58 | #define define_list_config_array(array) \ |
| 59 | void list_config_##array(struct string_list *list, const char *prefix) \ |
| 60 | { \ |
| 61 | int i; \ |
| 62 | for (i = 0; i < ARRAY_SIZE(array); i++) \ |
| 63 | if (array[i]) \ |
| 64 | list_config_item(list, prefix, array[i]); \ |
| 65 | } \ |
| 66 | struct string_list |
| 67 | |
| 68 | #define define_list_config_array_extra(array, values) \ |
| 69 | void list_config_##array(struct string_list *list, const char *prefix) \ |
| 70 | { \ |
| 71 | int i; \ |
| 72 | static const char *extra[] = values; \ |
| 73 | for (i = 0; i < ARRAY_SIZE(extra); i++) \ |
| 74 | list_config_item(list, prefix, extra[i]); \ |
| 75 | for (i = 0; i < ARRAY_SIZE(array); i++) \ |
| 76 | if (array[i]) \ |
| 77 | list_config_item(list, prefix, array[i]); \ |
| 78 | } \ |
| 79 | struct string_list |
| 80 | |
| 81 | /* These are actually scattered over many C files */ |
| 82 | void list_config_advices(struct string_list *list, const char *prefix); |
| 83 | void list_config_color_branch_slots(struct string_list *list, const char *prefix); |
| 84 | void list_config_color_decorate_slots(struct string_list *list, const char *prefix); |
| 85 | void list_config_color_diff_slots(struct string_list *list, const char *prefix); |
| 86 | void list_config_color_grep_slots(struct string_list *list, const char *prefix); |
| 87 | void list_config_color_interactive_slots(struct string_list *list, const char *prefix); |
| 88 | void list_config_color_status_slots(struct string_list *list, const char *prefix); |
Han-Wen Nienhuys | bf1a11f | 2018-08-07 14:51:08 +0200 | [diff] [blame] | 89 | void list_config_color_sideband_slots(struct string_list *list, const char *prefix); |
Nguyễn Thái Ngọc Duy | 3ac68a9 | 2018-05-26 15:55:24 +0200 | [diff] [blame] | 90 | void list_config_fsck_msg_ids(struct string_list *list, const char *prefix); |
| 91 | |
Miklos Vajna | 940208a | 2008-07-30 01:16:58 +0200 | [diff] [blame] | 92 | #endif /* HELP_H */ |