+my $usage = 'Usage: public-inbox-xcpdb [options] INBOX_DIR';
+my $help = <<EOF; # the following should fit w/o scrolling in 80x24 term:
+usage: $usage
+
+ upgrade or reshard Xapian DB(s) used by public-inbox
+
+options:
+
+ --compact | -c run public-inbox-compact(1) after indexing
+ --all copy all configured inboxes
+ --reshard=NUM change number the number of shards
+ --jobs=NUM limit parallelism to JOBS count
+ --verbose | -v increase verbosity (may be repeated)
+ --sequential-shard copy+index Xapian shards sequentially (for slow HDD)
+ --help | -? show this help
+
+index options (see public-inbox-index(1) man page for full description):
+
+ --no-fsync speed up indexing, risk corruption on power outage
+ --batch-size=BYTES flush changes to OS after a given number of bytes
+ --max-size=BYTES do not index messages larger than the given size
+
+See public-inbox-xcpdb(1) man page for full documentation.
+EOF
+my $opt = { quiet => -1, compact => 0, fsync => 1 };
+GetOptions($opt, qw(
+ fsync|sync! compact|c reshard|R=i
+ max_size|max-size=s batch_size|batch-size=s
+ sequential_shard|seq-shard|sequential-shard
+ jobs|j=i quiet|q verbose|v
+ blocksize|b=s no-full|n fuller|F
+ all help|?)) or die "bad command-line args\n$usage";
+if ($opt->{help}) { print $help; exit 0 };
+