my @ret;
for my $cr_name (@$cr) {
$ret[0] //= <<EOF;
-<a id=code>code repositories for project(s) associated with this inbox:
+<a id=code>Code repositories for project(s) associated with this inbox:
EOF
my $urls = $cfg->get_all("coderepo.$cr_name.cgiturl");
if ($urls) {
sub _html_end {
my ($ctx) = @_;
- my @cr = coderepos($ctx);
- scalar(@cr) ?
- '<hr><pre>'.join("\n\n", @cr).'</pre></body></html>' :
- '</body></html>';
+ my $upfx = $ctx->{-upfx} || '';
+ my $m = "${upfx}_/text/mirror/";
+ my $x;
+ if ($ctx->{ibx}->can('cloneurl')) {
+ $x = <<EOF;
+This is a public inbox, see <a
+href="$m">mirroring instructions</a>
+for how to clone and mirror all data and code used for this inbox
+EOF
+ my $has_nntp = @{$ctx->{ibx}->nntp_url($ctx)};
+ my $has_imap = @{$ctx->{ibx}->imap_url($ctx)};
+ if ($has_nntp || $has_imap) {
+ substr($x, -1, 1) = ";\n"; # s/\n/;\n
+ if ($has_nntp && $has_imap) {
+ $x .= <<EOM;
+as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).
+EOM
+ } elsif ($has_nntp) {
+ $x .= <<EOM;
+as well as URLs for NNTP newsgroup(s).
+EOM
+ } else {
+ $x .= <<EOM;
+as well as URLs for IMAP folder(s).
+EOM
+ }
+ }
+ } else {
+ $x = <<EOF;
+This is an external index of several public inboxes,
+see <a href="$m">mirroring instructions</a> on how to clone and mirror
+all data and code used by this external index.
+EOF
+ }
+ chomp $x;
+ '<hr><pre>'.join("\n\n", coderepos($ctx), $x).'</pre></body></html>'
}
# callback for HTTP.pm (and any other PSGI servers)