Parse the [common] block to create the array of group descriptions: static char *common_cmd_groups[] = { N_("start a working area (see also: git help tutorial)"), N_("work on the current change (see also: git help everyday)"), N_("examine the history and state (see also: git help revisions)"), N_("grow, mark and tweak your history"), N_("collaborate (see also: git help workflows)"), }; then map each element of common_cmds[] to a group via its index: static struct cmdname_help common_cmds[] = { {"add", N_("Add file contents to the index"), 1}, {"branch", N_("List, create, or delete branches"), 4}, {"checkout", N_("Checkout a branch or paths to the ..."), 4}, {"clone", N_("Clone a repository into a new directory"), 0}, {"commit", N_("Record changes to the repository"), 4}, ... }; so that 'git help' can print those commands grouped by theme. Only commands tagged with an attribute from [common] are emitted to common_cmds[]. [commit message by Sébastien Guimmara <sebastien.guimmara@xxxxxxxxx>] Signed-off-by: Eric Sunshine <sunshine@xxxxxxxxxxxxxx> --- generate-cmdlist.awk | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 generate-cmdlist.awk diff --git a/generate-cmdlist.awk b/generate-cmdlist.awk new file mode 100644 index 0000000..cbaac88 --- /dev/null +++ b/generate-cmdlist.awk @@ -0,0 +1,38 @@ +BEGIN { + print "/* Automatically generated by generate-cmdlist.awk */\n" + print "struct cmdname_help {" + print "\tchar name[16];" + print "\tchar help[80];" + print "\tunsigned char group;" + print "};\n" + print "static char *common_cmd_groups[] = {" +} +/^#/ || /^[ ]*$/ { next } +state == 2 { + for (i = 2; i <= NF; i++) + if (grp[$i]) { + f = "Documentation/"$1".txt" + while (getline s <f > 0) + if (match(s, $1" - ")) { + t = substr(s, length($1" - ") + 1) + break + } + close(f) + printf "\t{\"%s\", N_(\"%s\"), %s},\n", + substr($1, length("git-") + 1), t, grp[$i] - 1 + break + } +} +/\[commands\]/ { + print "};\n\nstatic struct cmdname_help common_cmds[] = {" + state = 2 +} +state == 1 { + grp[$1] = ++n + sub($1"[ ][ ]*", "") + printf "\tN_(\"%s\"),\n", $0 +} +/\[common\]/ { + state = 1 +} +END { print "};" } -- 2.4.0 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html