Merge branch 'sg/help-group'
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:
commit
678c5a49ee
4
Makefile
4
Makefile
@ -1698,10 +1698,10 @@ $(BUILT_INS): git$X
|
|||||||
ln -s $< $@ 2>/dev/null || \
|
ln -s $< $@ 2>/dev/null || \
|
||||||
cp $< $@
|
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)
|
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):\
|
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):\
|
||||||
|
@ -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";
|
|
50
generate-cmdlist.sh
Executable file
50
generate-cmdlist.sh
Executable file
@ -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 "};"
|
Loading…
Reference in New Issue
Block a user