From: Johannes Schindelin <johannes.schinde...@gmx.de>

This imitates the code to show the help text from the Perl script
`git-add--interactive.perl` in the built-in version.

To make sure that it renders exactly like the Perl version of `git add
-i`, we also add a test case for that to `t3701-add-interactive.sh`.

Signed-off-by: Slavica Djukic <slawic...@hotmail.com>
Signed-off-by: Johannes Schindelin <johannes.schinde...@gmx.de>
---
 add-interactive.c          | 27 +++++++++++++++++++++++++--
 t/t3701-add-interactive.sh | 24 ++++++++++++++++++++++++
 2 files changed, 49 insertions(+), 2 deletions(-)

diff --git a/add-interactive.c b/add-interactive.c
index a1550d9b9f..a6baf57e20 100644
--- a/add-interactive.c
+++ b/add-interactive.c
@@ -439,6 +439,27 @@ static int run_status(struct repository *r, const struct 
pathspec *ps,
        return 0;
 }
 
+static int run_help(struct repository *r, const struct pathspec *ps,
+                   struct file_list *files, struct list_options *opts)
+{
+       const char *help_color = get_add_i_color(COLOR_HELP);
+
+       color_fprintf_ln(stdout, help_color, "status        - %s",
+                        _("show paths with changes"));
+       color_fprintf_ln(stdout, help_color, "update        - %s",
+                        _("add working tree state to the staged set of 
changes"));
+       color_fprintf_ln(stdout, help_color, "revert        - %s",
+                        _("revert staged set of changes back to the HEAD 
version"));
+       color_fprintf_ln(stdout, help_color, "patch         - %s",
+                        _("pick hunks and update selectively"));
+       color_fprintf_ln(stdout, help_color, "diff          - %s",
+                        _("view diff between HEAD and index"));
+       color_fprintf_ln(stdout, help_color, "add untracked - %s",
+                        _("add contents of untracked files to the staged set 
of changes"));
+
+       return 0;
+}
+
 struct print_command_item_data {
        const char *color, *reset;
 };
@@ -490,9 +511,11 @@ int run_add_i(struct repository *r, const struct pathspec 
*ps)
                N_("What now"), command_prompt_help
        };
        struct command_item
-               status = { { "status" }, run_status };
+               status = { { "status" }, run_status },
+               help = { { "help" }, run_help };
        struct command_item *commands[] = {
-               &status
+               &status,
+               &help
        };
 
        struct print_file_item_data print_file_item_data = {
diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh
index 65dfbc033a..91aaef2932 100755
--- a/t/t3701-add-interactive.sh
+++ b/t/t3701-add-interactive.sh
@@ -639,4 +639,28 @@ test_expect_success 'add -p patch editing works with 
pathological context lines'
        test_cmp expected-2 actual
 '
 
+test_expect_success 'show help from add--helper' '
+       git reset --hard &&
+       cat >expect <<-EOF &&
+
+       <BOLD>*** Commands ***<RESET>
+         1: <BOLD;BLUE>s<RESET>tatus     2: <BOLD;BLUE>u<RESET>pdate     3: 
<BOLD;BLUE>r<RESET>evert     4: <BOLD;BLUE>a<RESET>dd untracked
+         5: <BOLD;BLUE>p<RESET>atch      6: <BOLD;BLUE>d<RESET>iff       7: 
<BOLD;BLUE>q<RESET>uit       8: <BOLD;BLUE>h<RESET>elp
+       <BOLD;BLUE>What now<RESET>> <BOLD;RED>status        - show paths with 
changes<RESET>
+       <BOLD;RED>update        - add working tree state to the staged set of 
changes<RESET>
+       <BOLD;RED>revert        - revert staged set of changes back to the HEAD 
version<RESET>
+       <BOLD;RED>patch         - pick hunks and update selectively<RESET>
+       <BOLD;RED>diff          - view diff between HEAD and index<RESET>
+       <BOLD;RED>add untracked - add contents of untracked files to the staged 
set of changes<RESET>
+       <BOLD>*** Commands ***<RESET>
+         1: <BOLD;BLUE>s<RESET>tatus     2: <BOLD;BLUE>u<RESET>pdate     3: 
<BOLD;BLUE>r<RESET>evert     4: <BOLD;BLUE>a<RESET>dd untracked
+         5: <BOLD;BLUE>p<RESET>atch      6: <BOLD;BLUE>d<RESET>iff       7: 
<BOLD;BLUE>q<RESET>uit       8: <BOLD;BLUE>h<RESET>elp
+       <BOLD;BLUE>What now<RESET>>$SP
+       Bye.
+       EOF
+       test_write_lines h | GIT_PAGER_IN_USE=true TERM=vt100 git add -i 
>actual.colored &&
+       test_decode_color <actual.colored >actual &&
+       test_i18ncmp expect actual
+'
+
 test_done
-- 
gitgitgadget

Reply via email to