#!/usr/bin/perl -w # Copyright (C) 2018 all contributors # License: AGPL-3.0+ use strict; use warnings; use Getopt::Long qw(:config gnu_getopt no_ignore_case auto_abbrev); use PublicInbox::Search; use PublicInbox::Config; use PublicInbox::InboxWritable; use Cwd 'abs_path'; use PublicInbox::Xapcmd; my $usage = "Usage: public-inbox-compact REPO_DIR\n"; my $dir = shift or die $usage; my $config = eval { PublicInbox::Config->new }; my $ibx; $dir = abs_path($dir); if ($config) { $config->each_inbox(sub { $ibx = $_[0] if abs_path($_[0]->{mainrepo}) eq $dir }); } unless ($ibx) { warn "W: $dir not configured in ". PublicInbox::Config::default_file() . "\n"; $ibx = { mainrepo => $dir, name => 'ignored', address => [ 'old@example.com' ], }; $ibx = PublicInbox::Inbox->new($ibx); } $ibx = PublicInbox::InboxWritable->new($ibx); # we rely on --no-renumber to keep docids synched to NNTP PublicInbox::Xapcmd::run($ibx, [qw(xapian-compact --no-renumber)]);