From: Eric Wong Date: Sat, 18 Jan 2025 01:26:06 +0000 (+0000) Subject: init: move --skip-artnum handling to {-creat_opt} X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d722b3594d42b0da4b4189c49c7cea1bd81c46fa;p=thirdparty%2Fpublic-inbox.git init: move --skip-artnum handling to {-creat_opt} It makes more sense to have inbox creation options bundled together and reduces the amount of potentially confusing positional parameters we must pass around. --- diff --git a/lib/PublicInbox/InboxWritable.pm b/lib/PublicInbox/InboxWritable.pm index 1982ac05a..a8239f491 100644 --- a/lib/PublicInbox/InboxWritable.pm +++ b/lib/PublicInbox/InboxWritable.pm @@ -29,7 +29,8 @@ sub assert_usable_dir { } sub _init_v1 { - my ($self, $skip_artnum) = @_; + my ($self) = @_; + my $skip_artnum = ($self->{-creat_opt} // {})->{'skip-artnum'}; if (defined($self->{indexlevel}) || defined($skip_artnum)) { require PublicInbox::SearchIdx; require PublicInbox::Msgmap; @@ -49,14 +50,13 @@ sub _init_v1 { } sub init_inbox { - my ($self, $shards, $skip_epoch, $skip_artnum) = @_; + my ($self, $shards, $skip_epoch) = @_; if ($self->version == 1) { my $dir = assert_usable_dir($self); PublicInbox::Import::init_bare($dir); - $self->with_umask(\&_init_v1, $self, $skip_artnum); + $self->with_umask(\&_init_v1, $self); } else { - my $v2w = importer($self); - $v2w->init_inbox($shards, $skip_epoch, $skip_artnum); + importer($self)->init_inbox($shards, $skip_epoch); } } diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm index b5ed7c02a..b62d0477e 100644 --- a/lib/PublicInbox/V2Writable.pm +++ b/lib/PublicInbox/V2Writable.pm @@ -76,7 +76,7 @@ sub new { # public (for now?) sub init_inbox { - my ($self, $shards, $skip_epoch, $skip_artnum) = @_; + my ($self, $shards, $skip_epoch) = @_; if (defined $shards) { $self->{parallel} = 0 if $shards == 0; $self->{shards} = $shards if $shards > 0; @@ -85,6 +85,7 @@ sub init_inbox { $max = $skip_epoch if (defined($skip_epoch) && !defined($max)); $self->{mg}->add_epoch($max // 0); $self->idx_init; + my $skip_artnum = ($self->{ibx}->{-creat_opt} // {})->{'skip-artnum'}; $self->{mm}->skip_artnum($skip_artnum) if defined $skip_artnum; $self->done; } diff --git a/script/public-inbox-init b/script/public-inbox-init index cf6443f77..1e479a3ac 100755 --- a/script/public-inbox-init +++ b/script/public-inbox-init @@ -34,15 +34,16 @@ EOF require PublicInbox::Admin; PublicInbox::Admin::require_or_die('-base'); -my ($version, $indexlevel, $skip_epoch, $skip_artnum, $jobs, $show_help); +my ($version, $indexlevel, $skip_epoch, $jobs, $show_help); my $skip_docdata; my $ng = ''; my (@c_extra, @chdir); +my $creat_opt = {}; my %opts = ( 'V|version=i' => \$version, 'L|index-level|indexlevel=s' => \$indexlevel, 'S|skip|skip-epoch=i' => \$skip_epoch, - 'skip-artnum=i' => \$skip_artnum, + 'skip-artnum=i' => \($creat_opt->{'skip-artnum'}), 'j|jobs=i' => \$jobs, 'ng|newsgroup=s' => \$ng, 'skip-docdata' => \$skip_docdata, @@ -195,7 +196,6 @@ my $ibx = PublicInbox::Inbox->new({ indexlevel => $indexlevel, }); -my $creat_opt = {}; if (defined $jobs) { die "--jobs is only supported for -V2 inboxes\n" if $version == 1; die "--jobs=$jobs must be >= 1\n" if $jobs <= 0; @@ -210,7 +210,7 @@ if ($skip_docdata) { die "--skip-docdata ignored with --indexlevel=basic\n"; $ibx->{-skip_docdata} = $skip_docdata; } -$ibx->init_inbox(0, $skip_epoch, $skip_artnum); +$ibx->init_inbox(0, $skip_epoch); my $f = "$inboxdir/description"; if (sysopen $fh, $f, O_CREAT|O_EXCL|O_WRONLY) {