diff options
author | Eric Wong <e@80x24.org> | 2019-05-15 01:18:09 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2019-05-15 06:15:34 +0000 |
commit | d0e8bfd866ed1e924e8d9f551939eecbea4920ef (patch) | |
tree | f8d4ba5e37452e42d9851e793d5132484907e123 /script/public-inbox-index | |
parent | b5c64fc01d3e7ca6243fdd8b811b6291bdb12235 (diff) | |
download | public-inbox-d0e8bfd866ed1e924e8d9f551939eecbea4920ef.tar.gz |
Since we lazy-load Xapian now, some errors may become more cryptic or buried. Try to improve that by making Admin show better errors.
Diffstat (limited to 'script/public-inbox-index')
-rwxr-xr-x | script/public-inbox-index | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/script/public-inbox-index b/script/public-inbox-index index 53def9a7..cf001cc1 100755 --- a/script/public-inbox-index +++ b/script/public-inbox-index @@ -10,18 +10,14 @@ use strict; use warnings; use Getopt::Long qw(:config gnu_getopt no_ignore_case auto_abbrev); my $usage = "public-inbox-index REPO_DIR"; -use PublicInbox::Config; use PublicInbox::Admin qw(resolve_repo_dir); +PublicInbox::Admin::require_or_die('-index'); +require PublicInbox::Config; my $config = eval { PublicInbox::Config->new } || eval { warn "public-inbox unconfigured for serving, indexing anyways...\n"; undef; }; -eval { require PublicInbox::SearchIdx }; -if ($@) { - print STDERR "Search::Xapian required for $0\n"; - exit 1; -} my $reindex; my $prune; @@ -56,26 +52,34 @@ defined($config) and $config->each_inbox(sub { } }); +my @inboxes; +my $mods = {}; + foreach my $dir (@dirs) { - if (!ref($dir)) { + my $ibx = $dir; + if (!ref($ibx)) { unless (-d $dir) { die "$dir does not appear to be an inbox repository\n"; } - my $ibx = { + $ibx = PublicInbox::Inbox->new({ mainrepo => $dir, name => 'unnamed', indexlevel => $indexlevel, version => -f "$dir/inbox.lock" ? 2 : 1, - }; - $dir = PublicInbox::Inbox->new($ibx); - } elsif (defined $indexlevel && !defined($dir->{indexlevel})) { + }); + } elsif (defined $indexlevel && !defined($ibx->{indexlevel})) { # XXX: users can shoot themselves in the foot, with this... - $dir->{indexlevel} = $indexlevel; + $ibx->{indexlevel} = $indexlevel; } - - index_inbox($dir); + push @inboxes, $ibx; + PublicInbox::Admin::scan_ibx_modules($mods, $ibx); } +PublicInbox::Admin::require_or_die(keys %$mods); + +require PublicInbox::SearchIdx; +index_inbox($_) for @inboxes; + sub index_inbox { my ($repo) = @_; if (ref($repo) && ($repo->{version} || 1) == 2) { |