#!/usr/bin/perl use strict; use warnings; print <<"EOT"; /* Automatically generated by $0 */ struct cmdname_help { char name[16]; char help[80]; unsigned char group; }; static char *common_cmd_groups[] = { EOT my $n = 0; my %grp; while (<>) { last if /^### command list/; next if (1../^### common groups/) || /^#/ || /^\s*$/; chop; my ($k, $v) = split ' ', $_, 2; $grp{$k} = $n++; print "\tN_(\"$v\"),\n"; } print "};\n\nstatic struct cmdname_help common_cmds[] = {\n"; while (<>) { next if /^#/ || /^\s*$/; my @tags = split; my $cmd = shift @tags; for my $t (@tags) { if (exists $grp{$t}) { my $s; open my $f, '<', "Documentation/$cmd.txt" or die; while (<$f>) { ($s) = /^$cmd - (.+)$/; last if $s; } close $f; $cmd =~ s/^git-//; print "\t{\"$cmd\", N_(\"$s\"), $grp{$t}},\n"; last; } } } print "};\n";