diff options
author | N Balachandran <nbalacha@redhat.com> | 2017-08-01 16:58:27 +0530 |
---|---|---|
committer | Atin Mukherjee <amukherj@redhat.com> | 2017-11-02 12:54:06 +0000 |
commit | 89dc54f50c9f800ca4446ea8fe736e4860588845 (patch) | |
tree | 3ab8f0d02c5b7cec5d113b60826a7bdffcdc47c7 /cli/src/cli-cmd-misc.c | |
parent | f9eedcad0127705c685e8b192726e46b170f00d1 (diff) |
cli: gluster help changes
gluster cli help now shows only the top level
help commands. gluster <component> help will now show
help commands for <component>.
Change-Id: I263f53a0870d80ef4cfaad455fdaa47e2ac4423b
BUG: 1474768
Signed-off-by: N Balachandran <nbalacha@redhat.com>
Diffstat (limited to 'cli/src/cli-cmd-misc.c')
-rw-r--r-- | cli/src/cli-cmd-misc.c | 77 |
1 files changed, 62 insertions, 15 deletions
diff --git a/cli/src/cli-cmd-misc.c b/cli/src/cli-cmd-misc.c index 9f8c159f073..c887515af85 100644 --- a/cli/src/cli-cmd-misc.c +++ b/cli/src/cli-cmd-misc.c @@ -23,6 +23,9 @@ extern struct rpc_clnt *global_rpc; extern rpc_clnt_prog_t *cli_rpc_prog; extern struct cli_cmd volume_cmds[]; +extern struct cli_cmd bitrot_cmds[]; +extern struct cli_cmd quota_cmds[]; +extern struct cli_cmd tier_cmds[]; extern struct cli_cmd cli_probe_cmds[]; extern struct cli_cmd cli_log_cmds[]; extern struct cli_cmd cli_system_cmds[]; @@ -38,37 +41,76 @@ cli_cmd_quit_cbk (struct cli_state *state, struct cli_cmd_word *word, exit (0); } + +static gf_boolean_t +cli_is_help_command (const char *pattern) +{ + /* FixFixFix + * This is not the best way to determine whether + * this is a help command + */ + if (strstr (pattern, "help")) + return _gf_true; + + return _gf_false; +} + + int cli_cmd_display_help (struct cli_state *state, struct cli_cmd_word *in_word, const char **words, int wordcount) { - struct cli_cmd *cmd[] = {volume_cmds, cli_probe_cmds, - cli_misc_cmds, snapshot_cmds, - global_cmds, NULL}; - struct cli_cmd *cmd_ind = NULL; - int i = 0; + struct cli_cmd *cmd[] = {cli_misc_cmds, cli_probe_cmds, + volume_cmds, bitrot_cmds, quota_cmds, +#if !defined(__NetBSD__) + tier_cmds, +#endif + snapshot_cmds, global_cmds, NULL}; + struct cli_cmd *cmd_ind = NULL; + int i = 0; + gf_boolean_t list_all = _gf_false; /* cli_system_cmds commands for internal usage they are not exposed */ - for (i=0; cmd[i]!=NULL; i++) - for (cmd_ind = cmd[i]; cmd_ind->pattern; cmd_ind++) - if (_gf_false == cmd_ind->disable) - cli_out ("%s - %s", cmd_ind->pattern, - cmd_ind->desc); + /* If "help all" */ + if (wordcount == 2) + list_all = _gf_true; + + for (i = 0; cmd[i] != NULL; i++) { + for (cmd_ind = cmd[i]; cmd_ind->pattern; cmd_ind++) { + if ((_gf_false == cmd_ind->disable) && + cli_is_help_command (cmd_ind->pattern)) { + if (list_all && (cmd_ind->cbk)) { + cmd_ind->cbk (state, in_word, words, + wordcount); + } else { + cli_out (" %-25s- %s", cmd_ind->pattern, + cmd_ind->desc); + } + } + } + } + + cli_out ("\n"); return 0; } + +struct cli_cmd cli_help_cmds[] = { + { "help [all]", + cli_cmd_display_help, + "display help for command classes"}, + + { NULL, NULL, NULL } +}; + + struct cli_cmd cli_misc_cmds[] = { { "quit", cli_cmd_quit_cbk, "quit"}, - - { "help", - cli_cmd_display_help, - "display command options"}, - { "exit", cli_cmd_quit_cbk, "exit"}, @@ -84,7 +126,12 @@ cli_cmd_misc_register (struct cli_state *state) struct cli_cmd *cmd = NULL; for (cmd = cli_misc_cmds; cmd->pattern; cmd++) { + ret = cli_cmd_register (&state->tree, cmd); + if (ret) + goto out; + } + for (cmd = cli_help_cmds; cmd->pattern; cmd++) { ret = cli_cmd_register (&state->tree, cmd); if (ret) goto out; |