generate-cmdlist.shon commit Merge branch 'rs/notes-merge-no-toctou' into maint (743fba8)
   1#!/bin/sh
   2
   3echo "/* Automatically generated by $0 */
   4struct cmdname_help {
   5        char name[16];
   6        char help[80];
   7        unsigned char group;
   8};
   9
  10static const char *common_cmd_groups[] = {"
  11
  12grps=grps$$.tmp
  13match=match$$.tmp
  14trap "rm -f '$grps' '$match'" 0 1 2 3 15
  15
  16sed -n '
  17        1,/^### common groups/b
  18        /^### command list/q
  19        /^#/b
  20        /^[     ]*$/b
  21        h;s/^[^         ][^     ]*[     ][      ]*\(.*\)/       N_("\1"),/p
  22        g;s/^\([^       ][^     ]*\)[   ].*/\1/w '$grps'
  23        ' "$1"
  24printf '};\n\n'
  25
  26n=0
  27substnum=
  28while read grp
  29do
  30        echo "^git-..*[         ]$grp"
  31        substnum="$substnum${substnum:+;}s/[    ]$grp/$n/"
  32        n=$(($n+1))
  33done <"$grps" >"$match"
  34
  35printf 'static struct cmdname_help common_cmds[] = {\n'
  36grep -f "$match" "$1" |
  37sed 's/^git-//' |
  38sort |
  39while read cmd tags
  40do
  41        tag=$(echo "$tags" | sed "$substnum; s/[^0-9]//g")
  42        sed -n '
  43                /^NAME/,/git-'"$cmd"'/H
  44                ${
  45                        x
  46                        s/.*git-'"$cmd"' - \(.*\)/      {"'"$cmd"'", N_("\1"), '$tag'},/
  47                        p
  48                }' "Documentation/git-$cmd.txt"
  49done
  50echo "};"