diff options
Diffstat (limited to 'generate-cmdlist.sh')
-rwxr-xr-x | generate-cmdlist.sh | 83 |
1 files changed, 41 insertions, 42 deletions
diff --git a/generate-cmdlist.sh b/generate-cmdlist.sh index 975777f05e..ab0d1b0c06 100755 --- a/generate-cmdlist.sh +++ b/generate-cmdlist.sh @@ -1,51 +1,50 @@ #!/bin/sh echo "/* Automatically generated by $0 */ -struct cmdname_help -{ - char name[16]; - char help[80]; +struct cmdname_help { + char name[16]; + char help[80]; + unsigned char group; }; -struct cmdname_help common_cmds[] = {" +static const char *common_cmd_groups[] = {" -sort <<\EOF | -add -apply -archive -bisect -branch -checkout -cherry-pick -clone -commit -diff -fetch -grep -init -log -merge -mv -prune -pull -push -rebase -reset -revert -rm -show -show-branch -status -tag -EOF -while read cmd +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 - sed -n ' - /NAME/,/git-'"$cmd"'/H - ${ - x - s/.*git-'"$cmd"' - \(.*\)/ {"'"$cmd"'", "\1"},/ - p - }' "Documentation/git-$cmd.txt" + 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 "};" |