blob: 205541e0f7f81b1df4061215ae34a2742a45475d [file] [log] [blame]
Eric Sunshine82aec452015-08-23 17:31:09 -04001#!/bin/sh
2
Nguyễn Thái Ngọc Duyf318d732018-05-10 10:46:41 +02003die () {
4 echo "$@" >&2
5 exit 1
6}
7
8command_list () {
Ævar Arnfjörð Bjarmasone88842e2021-11-05 15:08:07 +01009 while read cmd rest
10 do
11 case "$cmd" in
12 "#"* | '')
13 # Ignore comments and allow empty lines
14 continue
15 ;;
16 *)
17 case "$exclude_programs" in
18 *":$cmd:"*)
19 ;;
20 *)
21 echo "$cmd $rest"
22 ;;
23 esac
24 esac
25 done <"$1"
Nguyễn Thái Ngọc Duyf318d732018-05-10 10:46:41 +020026}
27
Nguyễn Thái Ngọc Duyf318d732018-05-10 10:46:41 +020028category_list () {
Ævar Arnfjörð Bjarmason1cecd062021-11-05 15:08:08 +010029 echo "$1" |
Ævar Arnfjörð Bjarmasone88842e2021-11-05 15:08:07 +010030 cut -d' ' -f2- |
Ævar Arnfjörð Bjarmason0f05f222021-11-05 15:08:02 +010031 tr ' ' '\012' |
Ævar Arnfjörð Bjarmason48bcd822021-11-05 15:08:03 +010032 grep -v '^$' |
33 LC_ALL=C sort -u
Nguyễn Thái Ngọc Duyf318d732018-05-10 10:46:41 +020034}
35
Nguyễn Thái Ngọc Duyf318d732018-05-10 10:46:41 +020036define_categories () {
37 echo
38 echo "/* Command categories */"
39 bit=0
Ævar Arnfjörð Bjarmason1cecd062021-11-05 15:08:08 +010040 echo "$1" |
Nguyễn Thái Ngọc Duyf318d732018-05-10 10:46:41 +020041 while read cat
42 do
43 echo "#define CAT_$cat (1UL << $bit)"
44 bit=$(($bit+1))
45 done
46 test "$bit" -gt 32 && die "Urgh.. too many categories?"
47}
48
Nguyễn Thái Ngọc Duy3c777762018-05-20 20:40:00 +020049define_category_names () {
50 echo
51 echo "/* Category names */"
52 echo "static const char *category_names[] = {"
53 bit=0
Ævar Arnfjörð Bjarmason1cecd062021-11-05 15:08:08 +010054 echo "$1" |
Nguyễn Thái Ngọc Duy3c777762018-05-20 20:40:00 +020055 while read cat
56 do
57 echo " \"$cat\", /* (1UL << $bit) */"
58 bit=$(($bit+1))
59 done
60 echo " NULL"
61 echo "};"
62}
63
Nguyễn Thái Ngọc Duyf318d732018-05-10 10:46:41 +020064print_command_list () {
65 echo "static struct cmdname_help command_list[] = {"
66
Ævar Arnfjörð Bjarmason1cecd062021-11-05 15:08:08 +010067 echo "$1" |
Nguyễn Thái Ngọc Duyf318d732018-05-10 10:46:41 +020068 while read cmd rest
69 do
Jeff King3ebeb1d2021-11-05 15:08:06 +010070 synopsis=
71 while read line
72 do
73 case "$line" in
74 "$cmd - "*)
75 synopsis=${line#$cmd - }
76 break
77 ;;
78 esac
79 done <"Documentation/$cmd.txt"
80
81 printf '\t{ "%s", N_("%s"), 0' "$cmd" "$synopsis"
Ævar Arnfjörð Bjarmason8d5be8b2021-11-05 15:08:05 +010082 printf " | CAT_%s" $rest
Nguyễn Thái Ngọc Duyf318d732018-05-10 10:46:41 +020083 echo " },"
84 done
85 echo "};"
86}
87
Ævar Arnfjörð Bjarmasone88842e2021-11-05 15:08:07 +010088exclude_programs=:
Johannes Schindelin724d6352019-04-18 06:16:40 -070089while test "--exclude-program" = "$1"
90do
91 shift
Ævar Arnfjörð Bjarmasone88842e2021-11-05 15:08:07 +010092 exclude_programs="$exclude_programs$1:"
Johannes Schindelin724d6352019-04-18 06:16:40 -070093 shift
94done
95
Ævar Arnfjörð Bjarmason1cecd062021-11-05 15:08:08 +010096commands="$(command_list "$1")"
97categories="$(category_list "$commands")"
98
Jonathan Nieder75135952016-07-01 17:32:00 -070099echo "/* Automatically generated by generate-cmdlist.sh */
Eric Sunshine82aec452015-08-23 17:31:09 -0400100struct cmdname_help {
Nguyễn Thái Ngọc Duyf318d732018-05-10 10:46:41 +0200101 const char *name;
102 const char *help;
Nguyễn Thái Ngọc Duycfb22a02018-05-10 10:46:42 +0200103 uint32_t category;
Eric Sunshine82aec452015-08-23 17:31:09 -0400104};
Nguyễn Thái Ngọc Duyf318d732018-05-10 10:46:41 +0200105"
Ævar Arnfjörð Bjarmason1cecd062021-11-05 15:08:08 +0100106define_categories "$categories"
Nguyễn Thái Ngọc Duy60f487a2018-05-10 10:46:43 +0200107echo
Ævar Arnfjörð Bjarmason1cecd062021-11-05 15:08:08 +0100108define_category_names "$categories"
Nguyễn Thái Ngọc Duy3c777762018-05-20 20:40:00 +0200109echo
Ævar Arnfjörð Bjarmason1cecd062021-11-05 15:08:08 +0100110print_command_list "$commands"