Browse Source
We rewrote one of the build scripts in Perl but this reimplements in Bourne shell. * sg/help-group: generate-cmdlist: re-implement as shell scriptmaint
![gitster@pobox.com](/assets/img/avatar_default.png)
3 changed files with 52 additions and 52 deletions
@ -1,50 +0,0 @@
@@ -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 @@
@@ -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