42 lines
939 B
Perl
Executable File
42 lines
939 B
Perl
Executable File
#!/usr/bin/env perl
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
my %msg = ();
|
|
my @start = ();
|
|
my %reorder = (help=>-1);
|
|
|
|
READ: while(<>) {
|
|
if(m/^# HELP HEADER START/) {
|
|
while(<>) {
|
|
next READ if m/^# HELP HEADER END/;
|
|
if(m/# (.*)/) {
|
|
push @start, $1
|
|
} else {
|
|
die "$0: Invalid HELP HEADER section in Makefile!\n";
|
|
}
|
|
}
|
|
next READ
|
|
}
|
|
if(m/# HELP((?:\([^\(\)]+\))?):\s*(.*)/) {
|
|
my ($target, $message) = ($1, $2);
|
|
if($target=~m/\((.*)\)/) {
|
|
$target = $1;
|
|
} else {
|
|
my $line = <>;
|
|
die "$0: Unexpected end of file, target expected!\n" if not defined $line;
|
|
$line=~m/^([^:]+):/ or die "$0: HELP marker expects target but no target found!\n";
|
|
$target = $1
|
|
}
|
|
$msg{$target} .= $message
|
|
}
|
|
}
|
|
|
|
print "$_\n" for @start;
|
|
print "\n" if @start;
|
|
for my $tar(sort {($reorder{$a}||0) <=> ($reorder{$b}||0) || $a cmp $b } keys %msg) {
|
|
print "$tar\n $msg{$tar}\n\n"
|
|
}
|
|
|