X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=script%2Fpublic-inbox-index;h=5dad6ecb5dfb5bb1d47552736aa143e3875a1471;hb=16870b42ac68a8704467989cb20c2c571e4749ab;hp=14d3afd48db2d63ce838d103807b626bf0984727;hpb=073e4082a07ddeebf7c3efcadde35d98adb21c92;p=public-inbox.git diff --git a/script/public-inbox-index b/script/public-inbox-index index 14d3afd4..5dad6ecb 100755 --- a/script/public-inbox-index +++ b/script/public-inbox-index @@ -8,9 +8,8 @@ use strict; use v5.10.1; use Getopt::Long qw(:config gnu_getopt no_ignore_case auto_abbrev); -my $usage = 'public-inbox-index [options] INBOX_DIR'; my $help = <{help}) { print $help; exit 0 }; die "--jobs must be >= 0\n" if defined $opt->{jobs} && $opt->{jobs} < 0; if ($opt->{xapian_only} && !$opt->{reindex}) { @@ -51,22 +50,28 @@ require PublicInbox::Admin; PublicInbox::Admin::require_or_die('-index'); my $cfg = PublicInbox::Config->new; # Config is loaded by Admin -my @ibxs = PublicInbox::Admin::resolve_inboxes(\@ARGV, undef, $cfg); +my @ibxs = PublicInbox::Admin::resolve_inboxes(\@ARGV, $opt, $cfg); PublicInbox::Admin::require_or_die('-index'); -unless (@ibxs) { print STDERR "Usage: $usage\n"; exit 1 } +unless (@ibxs) { print STDERR $help; exit 1 } my $mods = {}; foreach my $ibx (@ibxs) { + # detect_indexlevel may also set $ibx->{-skip_docdata} + my $detected = PublicInbox::Admin::detect_indexlevel($ibx); # XXX: users can shoot themselves in the foot, with opt->{indexlevel} $ibx->{indexlevel} //= $opt->{indexlevel} // ($opt->{xapian_only} ? - 'full' : PublicInbox::Admin::detect_indexlevel($ibx)); + 'full' : $detected); PublicInbox::Admin::scan_ibx_modules($mods, $ibx); } +# "Search::Xapian" includes SWIG "Xapian", too: +$opt->{compact} = 0 if !$mods->{'Search::Xapian'}; + PublicInbox::Admin::require_or_die(keys %$mods); my $env = PublicInbox::Admin::index_prepare($opt, $cfg); local %ENV = (%ENV, %$env) if $env; require PublicInbox::InboxWritable; +PublicInbox::Xapcmd::check_compact() if $opt->{compact}; PublicInbox::Admin::progress_prepare($opt); for my $ibx (@ibxs) { $ibx = PublicInbox::InboxWritable->new($ibx); @@ -74,6 +79,7 @@ for my $ibx (@ibxs) { PublicInbox::Xapcmd::run($ibx, 'compact', $opt->{compact_opt}); } $ibx->{-no_fsync} = 1 if !$opt->{fsync}; + $ibx->{-skip_docdata} //= $opt->{'skip-docdata'}; my $ibx_opt = $opt; if (defined(my $s = $ibx->{lc('indexSequentialShard')})) {