mirror of
https://github.com/git/git.git
synced 2025-12-18 12:00:25 +01:00
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>
This commit is contained in:
committed by
Junio C Hamano
parent
413f50b901
commit
527ec3980b
4
Makefile
4
Makefile
@@ -1687,10 +1687,10 @@ $(BUILT_INS): git$X
|
|||||||
ln -s $< $@ 2>/dev/null || \
|
ln -s $< $@ 2>/dev/null || \
|
||||||
cp $< $@
|
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)
|
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):\
|
SCRIPT_DEFINES = $(SHELL_PATH_SQ):$(DIFF_SQ):$(GIT_VERSION):\
|
||||||
$(localedir_SQ):$(NO_CURL):$(USE_GETTEXT_SCHEME):$(SANE_TOOL_PATH_SQ):\
|
$(localedir_SQ):$(NO_CURL):$(USE_GETTEXT_SCHEME):$(SANE_TOOL_PATH_SQ):\
|
||||||
|
|||||||
50
generate-cmdlist.perl
Executable file
50
generate-cmdlist.perl
Executable file
@@ -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";
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
echo "/* Automatically generated by $0 */
|
|
||||||
struct cmdname_help {
|
|
||||||
char name[16];
|
|
||||||
char help[80];
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct cmdname_help common_cmds[] = {"
|
|
||||||
|
|
||||||
sed -n -e 's/^git-\([^ ]*\)[ ].* common.*/\1/p' command-list.txt |
|
|
||||||
sort |
|
|
||||||
while read cmd
|
|
||||||
do
|
|
||||||
sed -n '
|
|
||||||
/^NAME/,/git-'"$cmd"'/H
|
|
||||||
${
|
|
||||||
x
|
|
||||||
s/.*git-'"$cmd"' - \(.*\)/ {"'"$cmd"'", N_("\1")},/
|
|
||||||
p
|
|
||||||
}' "Documentation/git-$cmd.txt"
|
|
||||||
done
|
|
||||||
echo "};"
|
|
||||||
Reference in New Issue
Block a user