From: Slavica Djukic <slawic...@hotmail.com>

Implement show-help command in add-interactive.c and use it in
builtin add--helper.c.

Use command name "show-help" instead of "help": add--helper is
builtin, hence add--helper --help would be intercepted by
handle_builtin and re-routed to the help command, without ever
calling cmd_add__helper().

Signed-off-by: Slavica Djukic <slawic...@hotmail.com>
---
 add-interactive.c     | 19 +++++++++++++++++++
 add-interactive.h     |  2 ++
 builtin/add--helper.c |  7 ++++++-
 3 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/add-interactive.c b/add-interactive.c
index c55d934186..ff5bfbac49 100644
--- a/add-interactive.c
+++ b/add-interactive.c
@@ -8,6 +8,16 @@
 
 #define HEADER_INDENT "      "
 
+/* TRANSLATORS: please do not translate the command names
+   'status', 'update', 'revert', etc. */
+static const char help_info[] = 
+               N_("status        - show paths with changes\n"
+               "update        - add working tree state to the staged set of 
changes\n"
+               "revert        - revert staged set of changes back to the HEAD 
version\n"
+               "patch         - pick hunks and update selectively\n"
+               "diff          - view diff between HEAD and index\n"
+               "add untracked - add contents of untracked files to the staged 
set of changes");
+
 enum collection_phase {
        WORKTREE,
        INDEX
@@ -244,3 +254,12 @@ void add_i_print_modified(void)
        free(files);
        hashmap_free(&s.file_map, 1);
 }
+
+void show_help(void)
+{
+       const char *help_color = get_color(COLOR_HELP);
+       const char *modified_fmt = _("%s");
+       printf("\n");
+       color_fprintf(stdout, help_color, modified_fmt, _(help_info));
+       printf("\n");
+}
diff --git a/add-interactive.h b/add-interactive.h
index 1f4747553c..a74c65b7e1 100644
--- a/add-interactive.h
+++ b/add-interactive.h
@@ -5,4 +5,6 @@ int add_i_config(const char *var, const char *value, void 
*cbdata);
 
 void add_i_print_modified(void);
 
+void show_help(void);
+
 #endif
\ No newline at end of file
diff --git a/builtin/add--helper.c b/builtin/add--helper.c
index 43545d9af5..e288412d56 100644
--- a/builtin/add--helper.c
+++ b/builtin/add--helper.c
@@ -10,7 +10,8 @@ static const char * const builtin_add_helper_usage[] = {
 
 enum cmd_mode {
        DEFAULT = 0,
-       STATUS
+       STATUS,
+       HELP
 };
 
 int cmd_add__helper(int argc, const char **argv, const char *prefix)
@@ -20,6 +21,8 @@ int cmd_add__helper(int argc, const char **argv, const char 
*prefix)
        struct option options[] = {
                OPT_CMDMODE(0, "status", &mode,
                         N_("print status information with diffstat"), STATUS),
+               OPT_CMDMODE(0, "show-help", &mode,
+                        N_("show help"), HELP),
                OPT_END()
        };
 
@@ -30,6 +33,8 @@ int cmd_add__helper(int argc, const char **argv, const char 
*prefix)
 
        if (mode == STATUS)
                add_i_print_modified();
+       else if (mode == HELP)
+               show_help();
        else
                usage_with_options(builtin_add_helper_usage,
                                   options);
-- 
gitgitgadget

Reply via email to