Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Postfix/mantools/   (Postfix Mailserver Version 3.11©)  Datei vom 6.1.2025 mit Größe 2 kB image not shown  

 make-relnotes  Interaktion und
Portierbarkeitunbekannt

 
#!/usr/bin/perl

# Transform RELEASE_NOTES, split into "leader", and "major changes",
# split into major categories, and prepend dates to paragraphs.
#
# Input format: the leader text is copied verbatim; each section
# starts with "Incompatible changes with snapshot YYYYMMDD" or "Major
# changes with snapshot YYYYMMDD" underlined with "=======..."; each
# paragraph starts with [class, class] where a class specifies one or
# more categories that the change should be listed under. Adding class
# info is the only manual processing needed to go from a RELEASE_NOTES
# file to the transformed representation.
#
# Output format: each category is printed with a little header and each
# paragraph is tagged with [Incompat yyyymmdd] or with [Feature yyyymmdd].

%leader = (); %body = ();
$append_to = \%leader;

while (<>) {

    if (/^(Incompatible changes|Incompatibility) with/) {
 die "No date found: $_" unless /(\d\d\d\d\d\d\d\d)/;
 $append_to = \%body;
 $prefix = "[Incompat $1] ";
 while (<>) {
     last if /^====/;
 }
 next;
    }

    if (/^Major changes with/) {
 die "No date found: $_" unless /(\d\d\d\d\d\d\d\d)/;
 $append_to = \%body;
 $prefix = "[Feature $1] ";
 while (<>) {
     last if /^====/;
 }
 next;
    }

    if (/^\s*\n/) {
 if ($paragraph) {
     for $class (@classes) {
  ${$append_to}{$class} .= $paragraph . $_;
     }
     $paragraph = "";
 }
    } else {
 if ($paragraph eq "") {
     if ($append_to eq \%leader) {
  @classes = ("default");
  $paragraph = $_;
     } elsif (/^\[([^]]+)\]\s*(.*)/s) {
  $paragraph = $prefix . $2;
  ($junk = $1) =~ s/\s*,\s*/,/g;
  $junk =~ s/^\s+//;
  $junk =~ s/\s+$//;
  #print "junk >$junk<\n";
  @classes = split(/,+/, $junk);
  #print "[", join(', ', @classes), "] ", $paragraph;
     } else {
  $paragraph = $_;
     }
 } else {
     $paragraph .= $_;
 }
    }
}

if ($paragraph) {
    for $class (@classes) {
 ${$append_to}{$class} .= $prefix . $paragraph . $_;
    }
}

print $leader{"default"}; 

for $class (sort keys %body) {
    print "Major changes - $class\n";
    ($junk = "Major changes - $class") =~ s/./-/g;
    print $junk, "\n\n";
    print $body{$class};
}

[Konzepte0.16Was zu einem Entwurf gehörtWie die Entwicklung von Software durchgeführt wird2026-09-27]