Makefile.PL
README
TODO
+contrib/css/216dark.css
+contrib/css/216light.css
+contrib/css/README
contrib/selinux/el7/publicinbox.fc
contrib/selinux/el7/publicinbox.te
examples/README
examples/apache2_perl_old.conf
examples/cgi-webrick.rb
examples/cgit-commit-filter.lua
+examples/highlight.psgi
examples/logrotate.conf
examples/public-inbox-config
examples/public-inbox-httpd.socket
examples/unsubscribe.psgi
examples/varnish-4.vcl
lib/PublicInbox/Address.pm
+ lib/PublicInbox/Admin.pm
lib/PublicInbox/AltId.pm
lib/PublicInbox/Config.pm
lib/PublicInbox/ContentId.pm
lib/PublicInbox/HTTP.pm
lib/PublicInbox/HTTPD.pm
lib/PublicInbox/HTTPD/Async.pm
+lib/PublicInbox/HlMod.pm
lib/PublicInbox/Hval.pm
lib/PublicInbox/Import.pm
lib/PublicInbox/Inbox.pm
lib/PublicInbox/SearchMsg.pm
lib/PublicInbox/SearchThread.pm
lib/PublicInbox/SearchView.pm
+lib/PublicInbox/SolverGit.pm
lib/PublicInbox/Spamcheck.pm
lib/PublicInbox/Spamcheck/Spamc.pm
lib/PublicInbox/Spawn.pm
lib/PublicInbox/SpawnPP.pm
lib/PublicInbox/Unsubscribe.pm
+lib/PublicInbox/UserContent.pm
lib/PublicInbox/V2Writable.pm
lib/PublicInbox/View.pm
+lib/PublicInbox/ViewDiff.pm
+lib/PublicInbox/ViewVCS.pm
lib/PublicInbox/WWW.pm
lib/PublicInbox/WWW.pod
lib/PublicInbox/WatchMaildir.pm
lib/PublicInbox/WwwAtomStream.pm
lib/PublicInbox/WwwAttach.pm
+lib/PublicInbox/WwwHighlight.pm
lib/PublicInbox/WwwStream.pm
lib/PublicInbox/WwwText.pm
sa_config/Makefile
script/public-inbox-learn
script/public-inbox-mda
script/public-inbox-nntpd
+ script/public-inbox-purge
script/public-inbox-watch
script/public-inbox.cgi
scripts/dc-dlvr
scripts/ssoma-replay
scripts/xhdr-num2mid
t/address.t
+ t/admin.t
t/altid.t
t/altid_v2.t
t/cgi.t
t/git-http-backend.t
t/git.fast-import-data
t/git.t
+t/hl_mod.t
t/html_index.t
t/httpd-corner.psgi
t/httpd-corner.t
t/nntpd.t
t/nulsubject.t
t/over.t
+t/perf-msgview.t
t/perf-nntpd.t
t/perf-threading.t
t/plack.t
t/psgi_search.t
t/psgi_text.t
t/psgi_v2.t
+ t/purge.t
t/qspawn.t
t/reply.t
t/search-thr-index.t
t/search.t
+t/solve/0001-simple-mod.patch
+t/solve/0002-rename-with-modifications.patch
+t/solver_git.t
t/spamcheck_spamc.t
t/spawn.t
t/thread-cycle.t
use strict;
use warnings;
use Getopt::Long qw(:config gnu_getopt no_ignore_case auto_abbrev);
- use Cwd 'abs_path';
my $usage = "public-inbox-index REPO_DIR";
use PublicInbox::Config;
+ use PublicInbox::Admin qw(resolve_repo_dir);
+
my $config = eval { PublicInbox::Config->new } || eval {
warn "public-inbox unconfigured for serving, indexing anyways...\n";
- {}
+ undef;
};
eval { require PublicInbox::SearchIdx };
if ($@) {
my @dirs;
- sub resolve_repo_dir {
- my ($cd) = @_;
- my $prefix = defined $cd ? $cd : './';
- if (-d $prefix && -f "$prefix/inbox.lock") { # v2
- return abs_path($prefix);
- }
-
- my @cmd = qw(git rev-parse --git-dir);
- my $cmd = join(' ', @cmd);
- my $pid = open my $fh, '-|';
- defined $pid or die "forking $cmd failed: $!\n";
- if ($pid == 0) {
- if (defined $cd) {
- chdir $cd or die "chdir $cd failed: $!\n";
- }
- exec @cmd;
- die "Failed to exec $cmd: $!\n";
- } else {
- my $dir = eval {
- local $/;
- <$fh>;
- };
- close $fh or die "error in $cmd: $!\n";
- chomp $dir;
- return abs_path($cd) if ($dir eq '.' && defined $cd);
- abs_path($dir);
- }
- }
-
if (@ARGV) {
@dirs = map { resolve_repo_dir($_) } @ARGV;
} else {
sub usage { print STDERR "Usage: $usage\n"; exit 1 }
usage() unless @dirs;
-$config->each_inbox(sub {
+defined($config) and $config->each_inbox(sub {
my ($ibx) = @_;
for my $i (0..$#dirs) {