multi-pack-index: load into memory
[gitweb.git] / generate-cmdlist.sh
index 870d3b626a536fca3c50b4ee7e1b31c47ae7e076..8d6d8b45ceb0138797eb7e54b15f7546925598ed 100755 (executable)
@@ -6,7 +6,7 @@ die () {
 }
 
 command_list () {
-       sed '1,/^### command list/d;/^#/d' "$1"
+       grep -v '^#' "$1"
 }
 
 get_categories () {
@@ -45,6 +45,21 @@ define_categories () {
        test "$bit" -gt 32 && die "Urgh.. too many categories?"
 }
 
+define_category_names () {
+       echo
+       echo "/* Category names */"
+       echo "static const char *category_names[] = {"
+       bit=0
+       category_list "$1" |
+       while read cat
+       do
+               echo "  \"$cat\", /* (1UL << $bit) */"
+               bit=$(($bit+1))
+       done
+       echo "  NULL"
+       echo "};"
+}
+
 print_command_list () {
        echo "static struct cmdname_help command_list[] = {"
 
@@ -65,49 +80,11 @@ echo "/* Automatically generated by generate-cmdlist.sh */
 struct cmdname_help {
        const char *name;
        const char *help;
-       uint32_t group;
+       uint32_t category;
 };
 "
-if test -z "$2"
-then
-       define_categories "$1"
-       echo
-       print_command_list "$1"
-       exit 0
-fi
-
-echo "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")
-       echo "  {\"$cmd\", $(get_synopsis git-$cmd), $tag},"
-done
-echo "};"
+define_categories "$1"
+echo
+define_category_names "$1"
+echo
+print_command_list "$1"