Eric Sunshine <sunshine@xxxxxxxxxxxxxx> writes: > diff --git a/generate-cmdlist.sh b/generate-cmdlist.sh > new file mode 100755 > index 0000000..1ac329d > --- /dev/null > +++ b/generate-cmdlist.sh > @@ -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[] = {" > + > +tmp=cmdgrps$$.tmp > +trap "rm -fr $tmp" 0 1 2 3 15 > + > +sed -n ' > + 1,/^### common groups/b > + /^### command list/q > + /^#/d; /^[ ]*$/b > + h;s/^[^ ][^ ]*[ ][ ]*\(.*\)/ N_("\1"),/p > + g;s/^\([^ ][^ ]*\)[ ].*/\1/w '$tmp' > + ' > +printf '};\n\n' Unfortunately, this does not seem to work for me. Even though sed stops reading after seeing the "### command list" line, I suspect that its stdin buffer has been filled with other lines that follow it from the input to the buffer size, consuming what you meant to feed the later 'grep $matchgrp"' with. This is a one-time thing, so I do not mind to update the Makefile so that it does not feed command-list.txt from the standard input but gives the path as "$1" to this script. > +n=0 > +matchgrp= > +substnum= > +while read grp > +do > + matchgrp="$matchgrp${matchgrp:+ > +}^git-..*[ ]$grp" > + substnum="$substnum${substnum:+;}s/[ ]$grp/$n/" > + n=$(($n+1)) > +done <$tmp > + > +printf 'static struct cmdname_help common_cmds[] = {\n' > +grep "$matchgrp" | > +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 "};" -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html