X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=Documentation%2Fmknews.perl;h=a9dede004aee78b5b37fa5e72684b8760e44d9ab;hb=e39585ee2bdcbeaab7b6bd33b3568021042d0879;hp=3efabdb592426799a23777a2eb3fe64f0c6699dd;hpb=599166a3072a1f165ca54121a9dbb24ce2585c2f;p=public-inbox.git
diff --git a/Documentation/mknews.perl b/Documentation/mknews.perl
index 3efabdb5..a9dede00 100755
--- a/Documentation/mknews.perl
+++ b/Documentation/mknews.perl
@@ -1,5 +1,5 @@
#!/usr/bin/perl -w
-# Copyright (C) 2019 all contributors
+# Copyright (C) 2019-2020 all contributors
# License: AGPL-3.0+
# 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;
}