]> Sergey Matveev's repositories - public-inbox.git/blobdiff - script/public-inbox-init
imap: drop old, pre-Parse::RecDescent search parser
[public-inbox.git] / script / public-inbox-init
index b19c2321ae22a72202f3db2d6c986b24d3b91cdc..c775eb3146ba485bb22f16a03d45506c1cef85cb 100755 (executable)
@@ -5,9 +5,8 @@ use strict;
 use v5.10.1;
 use Getopt::Long qw/:config gnu_getopt no_ignore_case auto_abbrev/;
 use Fcntl qw(:DEFAULT);
-my $usage = 'public-inbox-init NAME INBOX_DIR HTTP_URL ADDRESS [ADDRESS..]';
 my $help = <<EOF; # the following should fit w/o scrolling in 80x24 term:
-usage: $usage
+usage: public-inbox-init NAME INBOX_DIR HTTP_URL ADDRESS [ADDRESS..]
 
   Initialize a public-inbox
 
@@ -34,6 +33,7 @@ require PublicInbox::Admin;
 PublicInbox::Admin::require_or_die('-base');
 
 my ($version, $indexlevel, $skip_epoch, $skip_artnum, $jobs, $show_help);
+my $skip_docdata;
 my $ng = '';
 my %opts = (
        'V|version=i' => \$version,
@@ -42,10 +42,11 @@ my %opts = (
        'skip-artnum=i' => \$skip_artnum,
        'j|jobs=i' => \$jobs,
        'ng|newsgroup=s' => \$ng,
-       'help|?' => \$show_help,
+       'skip-docdata' => \$skip_docdata,
+       'help|h' => \$show_help,
 );
 my $usage_cb = sub {
-       print STDERR "Usage: $usage\n";
+       print STDERR $help;
        exit 1;
 };
 GetOptions(%opts) or $usage_cb->();
@@ -137,8 +138,9 @@ close($fh) or die "failed to close $pi_config_tmp: $!\n";
 my $pfx = "publicinbox.$name";
 my @x = (qw/git config/, "--file=$pi_config_tmp");
 
-require Cwd;
-$inboxdir = Cwd::abs_path($inboxdir);
+require File::Spec;
+$inboxdir = File::Spec->canonpath($inboxdir);
+
 die "`\\n' not allowed in `$inboxdir'\n" if $inboxdir =~ /\n/s;
 if (-f "$inboxdir/inbox.lock") {
        if (!defined $version) {
@@ -177,7 +179,18 @@ if (defined $jobs) {
 
 require PublicInbox::InboxWritable;
 $ibx = PublicInbox::InboxWritable->new($ibx, $creat_opt);
+if ($skip_docdata) {
+       $ibx->{indexlevel} //= 'full'; # ensure init_inbox writes xdb
+       $ibx->{indexlevel} eq 'basic' and
+               die "--skip-docdata ignored with --indexlevel=basic\n";
+       $ibx->{-skip_docdata} = $skip_docdata;
+}
 $ibx->init_inbox(0, $skip_epoch, $skip_artnum);
+require Cwd;
+my $tmp = Cwd::abs_path($inboxdir);
+defined($tmp) or die "failed to resolve $inboxdir: $!\n";
+$inboxdir = $tmp;
+die "`\\n' not allowed in `$inboxdir'\n" if $inboxdir =~ /\n/s;
 
 # needed for git prior to v2.1.0
 umask(0077) if defined $perm;