about summary refs log tree commit homepage
path: root/Documentation/mknews.perl
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/mknews.perl')
-rwxr-xr-xDocumentation/mknews.perl51
1 files changed, 30 insertions, 21 deletions
diff --git a/Documentation/mknews.perl b/Documentation/mknews.perl
index d803ca77..001ad310 100755
--- a/Documentation/mknews.perl
+++ b/Documentation/mknews.perl
@@ -1,12 +1,13 @@
 #!/usr/bin/perl -w
-# Copyright (C) 2019-2020 all contributors <meta@public-inbox.org>
+# Copyright (C) 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
 # needs to be updated if they change.
 use strict;
-use PublicInbox::MIME;
+use PublicInbox::Eml;
 use PublicInbox::View;
+use PublicInbox::Hval qw(fmt_ts);
 use PublicInbox::MsgTime qw(msg_datestamp);
 use PublicInbox::MID qw(mids mid_escape);
 END { $INC{'Plack/Util.pm'} and warn "$0 should not have loaded Plack::Util\n" }
@@ -37,14 +38,19 @@ if ($dst eq 'NEWS') {
         my $ibx = My::MockObject->new(
                 description => 'public-inbox releases',
                 over => undef,
-                search => 1, # for WwwStream:_html_top
+                search => 1, # for WwwStream::html_top
                 base_url => "$base_url/",
         );
         $ibx->{-primary_address} = $addr;
         my $ctx = {
-                -inbox => $ibx,
+                ibx => $ibx,
                 -upfx => "$base_url/",
                 -hr => 1,
+                zfh => $out,
+                env => {
+                        HTTP_HOST => 'public-inbox.org',
+                        'psgi.url_scheme' => 'https',
+                },
         };
         if ($dst eq 'NEWS.html') {
                 html_start($out, $ctx);
@@ -76,7 +82,7 @@ sub release2mime {
         my ($release, $mtime_ref) = @_;
         my $f = "$dir/$release.eml";
         open(my $fh, '<', $f) or die "open($f): $!";
-        my $mime = PublicInbox::MIME->new(do { local $/; <$fh> });
+        my $mime = PublicInbox::Eml->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
@@ -91,7 +97,7 @@ sub mime2txt {
         my $title = $mime->header('Subject');
         $title =~ s/^\s*\[\w+\]\s*//g; # [ANNOUNCE] or [ANN]
         my $dtime = msg_datestamp($mime->header_obj);
-        $title .= ' - ' . PublicInbox::View::fmt_ts($dtime) . ' UTC';
+        $title .= ' - ' . fmt_ts($dtime) . ' UTC';
         print $out $title, "\n" or die;
         my $uline = '=' x length($title);
         print $out $uline, "\n\n" or die;
@@ -102,24 +108,26 @@ sub mime2txt {
 }
 
 sub mime2html {
-        my ($out, $mime, $ctx) = @_;
-        my $smsg = bless { mime => $mime }, 'PublicInbox::SearchMsg';
-        print $out PublicInbox::View::index_entry($smsg, $ctx, 1) or die;
+        my ($out, $eml, $ctx) = @_;
+        my $smsg = $ctx->{smsg} = bless {}, 'PublicInbox::Smsg';
+        $smsg->populate($eml);
+        $ctx->{msgs} = [ 1 ]; # for <hr> in eml_entry
+        print $out PublicInbox::View::eml_entry($ctx, $eml) or die;
 }
 
 sub html_start {
         my ($out, $ctx) = @_;
         require PublicInbox::WwwStream;
         $ctx->{www} = My::MockObject->new(style => '');
-        my $www_stream = PublicInbox::WwwStream->new($ctx);
-        print $out $www_stream->_html_top, '<pre>' or die;
+        my $www_stream = PublicInbox::WwwStream::init($ctx);
+        print $out $www_stream->html_top, '<pre>' or die;
 }
 
 sub html_end {
-        print $out <<EOF or die;
-        git clone $PublicInbox::WwwStream::CODE_URL
-</pre></body></html>
-EOF
+        for (@$PublicInbox::WwwStream::CODE_URL) {
+                print $out "        git clone $_\n" or die;
+        }
+        print $out "</pre></body></html>\n" or die;
 }
 
 sub atom_start {
@@ -127,10 +135,10 @@ sub atom_start {
         require PublicInbox::WwwAtomStream;
         # WwwAtomStream stats this dir for mtime
         my $astream = PublicInbox::WwwAtomStream->new($ctx);
-        delete $ctx->{emit_header};
-        my $ibx = $ctx->{-inbox};
+        delete $astream->{emit_header};
+        my $ibx = $ctx->{ibx};
         my $title = PublicInbox::WwwAtomStream::title_tag($ibx->description);
-        my $updated = PublicInbox::WwwAtomStream::feed_updated(gmtime($mtime));
+        my $updated = PublicInbox::WwwAtomStream::feed_updated($mtime);
         print $out <<EOF or die;
 <?xml version="1.0" encoding="us-ascii"?>
 <feed
@@ -146,9 +154,10 @@ EOF
 }
 
 sub mime2atom  {
-        my ($out, $astream, $mime, $ctx) = @_;
-        my $smsg = bless { mime => $mime }, 'PublicInbox::SearchMsg';
-        if (defined(my $str = $astream->feed_entry($smsg))) {
+        my ($out, $astream, $eml, $ctx) = @_;
+        my $smsg = bless {}, 'PublicInbox::Smsg';
+        $smsg->populate($eml);
+        if (defined(my $str = $astream->feed_entry($smsg, $eml))) {
                 print $out $str or die;
         }
 }