Imported Upstream version 2.13.6
[platform/upstream/git.git] / generate-cmdlist.sh
index 1093ef4..ab0d1b0 100755 (executable)
@@ -2,22 +2,49 @@
 
 echo "/* Automatically generated by $0 */
 struct cmdname_help {
-    char name[16];
-    char help[80];
+       char name[16];
+       char help[80];
+       unsigned char group;
 };
 
-static struct cmdname_help common_cmds[] = {"
+static const char *common_cmd_groups[] = {"
 
-sed -n -e 's/^git-\([^         ]*\)[   ].* common.*/\1/p' command-list.txt |
+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
+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 "};"