50 lines
929 B
50 lines
929 B
#!/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 "};"
|
|
|