#!perl -w # Copyright (C) 2018-2021 all contributors # License: AGPL-3.0+ use strict; use v5.10.1; use Getopt::Long qw(:config gnu_getopt no_ignore_case auto_abbrev); my $opt = { compact => 1, -coarse_lock => 1, -eidx_ok => 1 }; my $help = < Compact Xapian DBs in an inbox options: --all index all configured inboxes --jobs=NUM control parallelization See public-inbox-compact(1) man page for full documentation. EOF GetOptions($opt, qw(all C=s@ help|h), # compact options: qw(jobs|j=i quiet|q blocksize|b=s no-full|n fuller|F), ) or die $help; if ($opt->{help}) { print $help; exit 0 }; require PublicInbox::Admin; PublicInbox::Admin::require_or_die('-index'); PublicInbox::Admin::do_chdir(delete $opt->{C}); PublicInbox::Admin::progress_prepare($opt); require PublicInbox::InboxWritable; require PublicInbox::Xapcmd; my $cfg = PublicInbox::Config->new; my ($ibxs, $eidxs) = PublicInbox::Admin::resolve_inboxes(\@ARGV, $opt, $cfg); unless ($ibxs) { print STDERR $help; exit 1 } for my $ibx (@$ibxs) { $ibx = PublicInbox::InboxWritable->new($ibx); PublicInbox::Xapcmd::run($ibx, 'compact', $opt); } for my $eidx (@$eidxs) { PublicInbox::Xapcmd::run($eidx, 'compact', $opt); }