From 8e8f4bf3fa16d3790a5eb74b8f07b904024ee9d8 Mon Sep 17 00:00:00 2001 From: Harpreet Kaur Lalwani Date: Wed, 21 Nov 2018 16:13:36 +0530 Subject: cli: "usage()" and "--help" for gluster cli Added a usage message which will be shown when a user enters an "unrecognized word" or an "unrecognized command" on the cli. Also added a "--help" option for gluster cli. fixes: bz#1535495 Change-Id: Ibcfb3d1c84daa1054e09c5cdfa6a5dab19f534a6 Signed-off-by: Harpreet Kaur Lalwani --- cli/src/cli-cmd.c | 6 ++++-- cli/src/cli.c | 17 ++++++++++++++++- cli/src/cli.h | 13 +++++++++++++ 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/cli/src/cli-cmd.c b/cli/src/cli-cmd.c index 396cabebbbe..2ee8b1b4968 100644 --- a/cli/src/cli-cmd.c +++ b/cli/src/cli-cmd.c @@ -108,12 +108,14 @@ cli_cmd_process(struct cli_state *state, int argc, char **argv) } if (!word) { - cli_out("unrecognized word: %s (position %d)", argv[i], i); + cli_out("unrecognized word: %s (position %d)\n", argv[i], i); + usage(); return -1; } if (!word->cbkfn) { - cli_out("unrecognized command"); + cli_out("unrecognized command\n"); + usage(); return -1; } diff --git a/cli/src/cli.c b/cli/src/cli.c index 3716d2a89ca..99fe6f1612c 100644 --- a/cli/src/cli.c +++ b/cli/src/cli.c @@ -320,6 +320,20 @@ cli_opt_parse(char *opt, struct cli_state *state) if (strcmp(opt, "") == 0) return 1; + if (strcmp(opt, "help") == 0) { + cli_out( + " peer help - display help for peer commands\n" + " volume help - display help for volume commands\n" + " volume bitrot help - display help for volume" + " bitrot commands\n" + " volume quota help - display help for volume" + " quota commands\n" + " volume tier help - display help for volume" + " tier commands\n" + " snapshot help - display help for snapshot commands\n" + " global help - list global commands\n"); + exit(0); + } if (strcmp(opt, "version") == 0) { cli_out("%s", argp_program_version); @@ -454,7 +468,8 @@ parse_cmdline(int argc, char *argv[], struct cli_state *state) continue; ret = cli_opt_parse(opt, state); if (ret == -1) { - cli_out("unrecognized option --%s", opt); + cli_out("unrecognized option --%s\n", opt); + usage(); return ret; } else if (ret == -2) { return ret; diff --git a/cli/src/cli.h b/cli/src/cli.h index 773297e4be8..2c2b4355111 100644 --- a/cli/src/cli.h +++ b/cli/src/cli.h @@ -239,6 +239,19 @@ _cli_err(const char *fmt, ...); \ } while (0) +#define usage() \ + do { \ + cli_out( \ + " Usage: gluster [options] " \ + " \n" \ + " Options:\n" \ + " --help Shows the help information\n" \ + " --version Shows the version\n" \ + " --print-logdir Shows the log directory\n" \ + " --print-statedumpdir Shows the state dump directory\n"); \ + \ + } while (0) + int cli_submit_request(struct rpc_clnt *rpc, void *req, call_frame_t *frame, rpc_clnt_prog_t *prog, int procnum, struct iobref *iobref, -- cgit