зеркало из https://github.com/microsoft/git.git
Merge branch 'sg/help-group' into maint
We rewrote one of the build scripts in Perl but this reimplements in Bourne shell. * sg/help-group: generate-cmdlist: re-implement as shell script
This commit is contained in:
Коммит
969560bddc
4
Makefile
4
Makefile
|
@ -1696,10 +1696,10 @@ $(BUILT_INS): git$X
|
|||
ln -s $< $@ 2>/dev/null || \
|
||||
cp $< $@
|
||||
|
||||
common-cmds.h: generate-cmdlist.perl command-list.txt
|
||||
common-cmds.h: generate-cmdlist.sh command-list.txt
|
||||
|
||||
common-cmds.h: $(wildcard Documentation/git-*.txt)
|
||||
$(QUIET_GEN)$(PERL_PATH) generate-cmdlist.perl command-list.txt > $@+ && mv $@+ $@
|
||||
$(QUIET_GEN)./generate-cmdlist.sh command-list.txt >$@+ && mv $@+ $@
|
||||
|
||||
SCRIPT_DEFINES = $(SHELL_PATH_SQ):$(DIFF_SQ):$(GIT_VERSION):\
|
||||
$(localedir_SQ):$(NO_CURL):$(USE_GETTEXT_SCHEME):$(SANE_TOOL_PATH_SQ):\
|
||||
|
|
|
@ -1,50 +0,0 @@
|
|||
#!/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";
|
|
@ -0,0 +1,50 @@
|
|||
#!/bin/sh
|
||||
|
||||
echo "/* Automatically generated by $0 */
|
||||
struct cmdname_help {
|
||||
char name[16];
|
||||
char help[80];
|
||||
unsigned char group;
|
||||
};
|
||||
|
||||
static const char *common_cmd_groups[] = {"
|
||||
|
||||
grps=grps$$.tmp
|
||||
match=match$$.tmp
|
||||
trap "rm -f '$grps' '$match'" 0 1 2 3 15
|
||||
|
||||
sed -n '
|
||||
1,/^### common groups/b
|
||||
/^### command list/q
|
||||
/^#/b
|
||||
/^[ ]*$/b
|
||||
h;s/^[^ ][^ ]*[ ][ ]*\(.*\)/ N_("\1"),/p
|
||||
g;s/^\([^ ][^ ]*\)[ ].*/\1/w '$grps'
|
||||
' "$1"
|
||||
printf '};\n\n'
|
||||
|
||||
n=0
|
||||
substnum=
|
||||
while read grp
|
||||
do
|
||||
echo "^git-..*[ ]$grp"
|
||||
substnum="$substnum${substnum:+;}s/[ ]$grp/$n/"
|
||||
n=$(($n+1))
|
||||
done <"$grps" >"$match"
|
||||
|
||||
printf 'static struct cmdname_help common_cmds[] = {\n'
|
||||
grep -f "$match" "$1" |
|
||||
sed 's/^git-//' |
|
||||
sort |
|
||||
while read cmd tags
|
||||
do
|
||||
tag=$(echo "$tags" | sed "$substnum; s/[^0-9]//g")
|
||||
sed -n '
|
||||
/^NAME/,/git-'"$cmd"'/H
|
||||
${
|
||||
x
|
||||
s/.*git-'"$cmd"' - \(.*\)/ {"'"$cmd"'", N_("\1"), '$tag'},/
|
||||
p
|
||||
}' "Documentation/git-$cmd.txt"
|
||||
done
|
||||
echo "};"
|
Загрузка…
Ссылка в новой задаче