Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
generate-cmdlist: parse common group commands
Parse the group block to create the array of group descriptions:

static char *common_cmd_groups[] = {
    N_("starting a working area"),
    N_("working on the current change"),
    N_("working with others"),
    N_("examining the history and state"),
    N_("growing, marking and tweaking your history"),
};

then map each element of common_cmds[] to a group via its index:

static struct cmdname_help common_cmds[] = {
    {"add", N_("Add file contents to the index"), 1},
    {"branch", N_("List, create, or delete branches"), 4},
    {"checkout", N_("Checkout a branch or paths to the ..."), 4},
    {"clone", N_("Clone a repository into a new directory"), 0},
    {"commit", N_("Record changes to the repository"), 4},
    ...
};

so that 'git help' can print those commands grouped by theme.

Only commands tagged with an attribute from the group block are emitted to
common_cmds[].

[commit message by Sébastien Guimmara <sebastien.guimmara@gmail.com>]

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Sébastien Guimmara <sebastien.guimmara@gmail.com>
Reviewed-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Eric Sunshine authored and Junio C Hamano committed May 21, 2015
1 parent 413f50b commit 527ec39
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 25 deletions.
4 changes: 2 additions & 2 deletions Makefile
Expand Up @@ -1687,10 +1687,10 @@ $(BUILT_INS): git$X
ln -s $< $@ 2>/dev/null || \
cp $< $@

common-cmds.h: ./generate-cmdlist.sh command-list.txt
common-cmds.h: generate-cmdlist.perl command-list.txt

common-cmds.h: $(wildcard Documentation/git-*.txt)
$(QUIET_GEN)./generate-cmdlist.sh > $@+ && mv $@+ $@
$(QUIET_GEN)$(PERL_PATH) generate-cmdlist.perl command-list.txt > $@+ && mv $@+ $@

SCRIPT_DEFINES = $(SHELL_PATH_SQ):$(DIFF_SQ):$(GIT_VERSION):\
$(localedir_SQ):$(NO_CURL):$(USE_GETTEXT_SCHEME):$(SANE_TOOL_PATH_SQ):\
Expand Down
50 changes: 50 additions & 0 deletions generate-cmdlist.perl
@@ -0,0 +1,50 @@
#!/usr/bin/perl
use strict;
use warnings;

print <<"EOT";
/* Automatically generated by $0 */
struct cmdname_help {
char name[16];
char help[80];
unsigned char group;
};
static char *common_cmd_groups[] = {
EOT

my $n = 0;
my %grp;
while (<>) {
last if /^### command list/;
next if (1../^### common groups/) || /^#/ || /^\s*$/;
chop;
my ($k, $v) = split ' ', $_, 2;
$grp{$k} = $n++;
print "\tN_(\"$v\"),\n";
}

print "};\n\nstatic struct cmdname_help common_cmds[] = {\n";

while (<>) {
next if /^#/ || /^\s*$/;
my @tags = split;
my $cmd = shift @tags;
for my $t (@tags) {
if (exists $grp{$t}) {
my $s;
open my $f, '<', "Documentation/$cmd.txt" or die;
while (<$f>) {
($s) = /^$cmd - (.+)$/;
last if $s;
}
close $f;
$cmd =~ s/^git-//;
print "\t{\"$cmd\", N_(\"$s\"), $grp{$t}},\n";
last;
}
}
}

print "};\n";
23 changes: 0 additions & 23 deletions generate-cmdlist.sh

This file was deleted.

0 comments on commit 527ec39

Please sign in to comment.