public-inbox.git  about / heads / tags
an "archives first" approach to mailing lists
blob 39dc9c0bfcb8d8ef21404a3ee6fc7ebb6407e098 1151 bytes (raw)
$ git show HEAD:lib/PublicInbox/RepoList.pm	# shows this blob on the CLI

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
# Copyright (C) all contributors <meta@public-inbox.org>
# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
package PublicInbox::RepoList;
use v5.12;
use parent qw(PublicInbox::WwwStream);
use PublicInbox::Hval qw(ascii_html prurl fmt_ts);
require PublicInbox::CodeSearch;

sub html_top_fallback { # WwwStream->html_repo_top
	my ($ctx) = @_;
	my $title = delete($ctx->{-title_html}) //
		ascii_html("$ctx->{env}->{PATH_INFO}*");
	my $upfx = $ctx->{-upfx} // '';
	"<html><head><title>$title</title>" .
		$ctx->{www}->style($upfx) . '</head><body>';
}

sub html ($$$) {
	my ($wcr, $ctx, $re) = @_;
	my $cr = $wcr->{pi_cfg}->{-coderepos};
	my @nicks = grep(m!$re!, keys %$cr) or return; # 404
	__PACKAGE__->html_init($ctx);
	my $zfh = $ctx->zfh;
	print $zfh "<pre>matching coderepos\n";
	my @recs = PublicInbox::CodeSearch::repos_sorted($wcr->{pi_cfg},
							@$cr{@nicks});
	my $env = $ctx->{env};
	for (@recs) {
		my ($t, $git) = @$_;
		my $nick = ascii_html("$git->{nick}");
		for my $u ($git->pub_urls($env)) {
			$u = prurl($env, $u);
			print $zfh "\n".fmt_ts($t).qq{ <a\nhref="$u">$nick</a>}
		}
	}
	$ctx->html_done('</pre>');
}

1;

git clone https://public-inbox.org/public-inbox.git
git clone http://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/public-inbox.git