| #!/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"; |