+sub cgit {
+ my ($self) = @_;
+ $self->{cgit} ||= do {
+ my $pi_config = $self->{pi_config};
+
+ if (defined($pi_config->{'publicinbox.cgitrc'})) {
+ require PublicInbox::Cgit;
+ PublicInbox::Cgit->new($pi_config);
+ } else {
+ Plack::Util::inline_object(call => sub { r404() });
+ }
+ }
+}
+
+sub www_listing {
+ my ($self) = @_;
+ $self->{www_listing} ||= do {
+ require PublicInbox::WwwListing;
+ PublicInbox::WwwListing->new($self);
+ }
+}
+
+# GET $INBOX/manifest.js.gz
+sub get_inbox_manifest ($$$) {
+ my ($ctx, $inbox, $key) = @_;
+ my $r404 = invalid_inbox($ctx, $inbox);
+ return $r404 if $r404;
+ require PublicInbox::WwwListing;
+ PublicInbox::WwwListing::js($ctx->{env}, [$ctx->{-inbox}]);
+}
+