]> Sergey Matveev's repositories - public-inbox.git/blobdiff - Documentation/mknews.perl
wwwatomstream: move {emit_header} field to $self
[public-inbox.git] / Documentation / mknews.perl
index 3efabdb592426799a23777a2eb3fe64f0c6699dd..a9dede004aee78b5b37fa5e72684b8760e44d9ab 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/perl -w
-# Copyright (C) 2019 all contributors <meta@public-inbox.org>
+# Copyright (C) 2019-2020 all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 # Generates NEWS, NEWS.atom, and NEWS.html files using release emails
 # this uses unstable internal APIs of public-inbox, and this script
@@ -21,8 +21,8 @@ my $atom_url = 'https://public-inbox.org/NEWS.atom';
 my $addr = 'meta@public-inbox.org';
 
 my $latest = shift(@releases) or die 'no releases?';
-my $mime_latest = release2mime($latest);
-my $mtime = msg_datestamp($mime_latest->header_obj);
+my $mtime;
+my $mime_latest = release2mime($latest, \$mtime);
 my $tmp = "$dst+";
 my $out;
 if ($dst eq 'NEWS') {
@@ -73,9 +73,17 @@ rename($tmp, $dst) or die;
 exit 0;
 
 sub release2mime {
-       my $f = "$dir/$_[0].eml";
+       my ($release, $mtime_ref) = @_;
+       my $f = "$dir/$release.eml";
        open(my $fh, '<', $f) or die "open($f): $!";
-       PublicInbox::MIME->new(do { local $/; <$fh> });
+       my $mime = PublicInbox::MIME->new(do { local $/; <$fh> });
+       # Documentation/include.mk relies on mtimes of each .eml file
+       # to trigger rebuild, so make sure we sync the mtime to the Date:
+       # header in the .eml
+       my $mtime = msg_datestamp($mime->header_obj);
+       utime($mtime, $mtime, $fh) or warn "futimes $f: $!";
+       $$mtime_ref = $mtime if $mtime_ref;
+       $mime;
 }
 
 sub mime2txt {
@@ -95,7 +103,7 @@ sub mime2txt {
 
 sub mime2html {
        my ($out, $mime, $ctx) = @_;
-       my $smsg = bless { mime => $mime }, 'PublicInbox::SearchMsg';
+       my $smsg = bless { mime => $mime }, 'PublicInbox::Smsg';
        print $out PublicInbox::View::index_entry($smsg, $ctx, 1) or die;
 }
 
@@ -119,7 +127,7 @@ sub atom_start {
        require PublicInbox::WwwAtomStream;
        # WwwAtomStream stats this dir for mtime
        my $astream = PublicInbox::WwwAtomStream->new($ctx);
-       delete $ctx->{emit_header};
+       delete $astream->{emit_header};
        my $ibx = $ctx->{-inbox};
        my $title = PublicInbox::WwwAtomStream::title_tag($ibx->description);
        my $updated = PublicInbox::WwwAtomStream::feed_updated(gmtime($mtime));
@@ -139,7 +147,7 @@ EOF
 
 sub mime2atom  {
        my ($out, $astream, $mime, $ctx) = @_;
-       my $smsg = bless { mime => $mime }, 'PublicInbox::SearchMsg';
+       my $smsg = bless { mime => $mime }, 'PublicInbox::Smsg';
        if (defined(my $str = $astream->feed_entry($smsg))) {
                print $out $str or die;
        }