summaryrefslogtreecommitdiff
path: root/generate-cmdlist.sh
diff options
context:
space:
mode:
Diffstat (limited to 'generate-cmdlist.sh')
-rwxr-xr-xgenerate-cmdlist.sh83
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 "};"