fradrive/utils/makehelp.pl
2024-09-23 11:06:00 +02:00

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"
}