X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=script%2Fpublic-inbox-convert;h=b61c743fd807157e9925201c8b89cbe7ca48e389;hb=4f1a683dc895a7bd4cf79e58b39faea256045921;hp=4ff198d1947e3ceeb3063b32ef0fa6aab9606ee6;hpb=f344d64066f85dd6737daeb42c94902e1bbfda78;p=public-inbox.git diff --git a/script/public-inbox-convert b/script/public-inbox-convert index 4ff198d1..b61c743f 100755 --- a/script/public-inbox-convert +++ b/script/public-inbox-convert @@ -4,9 +4,8 @@ use strict; use v5.10.1; use Getopt::Long qw(:config gnu_getopt no_ignore_case auto_abbrev); -my $usage = 'Usage: public-inbox-convert [options] OLD NEW'; my $help = < -1, compact => 0, maxsize => undef, fsync => 1, reindex => 1, # we always reindex }; -GetOptions($opt, qw(jobs|j=i index! help|?), +GetOptions($opt, qw(jobs|j=i index! help|h), # index options qw(verbose|v+ rethread compact|c+ fsync|sync! indexlevel|index-level|L=s max_size|max-size=s batch_size|batch-size=s sequential_shard|sequential-shard|seq-shard - )) or die <{help}) { print $help; exit 0 }; my $old_dir = shift(@ARGV) // ''; my $new_dir = shift(@ARGV) // ''; -die $usage if (scalar(@ARGV) || $new_dir eq '' || $old_dir eq ''); +die $help if (scalar(@ARGV) || $new_dir eq '' || $old_dir eq ''); die "$new_dir exists\n" if -d $new_dir; die "$old_dir not a directory\n" unless -d $old_dir; @@ -56,7 +52,9 @@ Cwd->import('abs_path'); require PublicInbox::Config; require PublicInbox::InboxWritable; -$old_dir = abs_path($old_dir); +my $abs = abs_path($old_dir); +die "failed to resolve $old_dir: $!\n" if (!defined($abs)); + my $cfg = PublicInbox::Config->new; my $old; $cfg->each_inbox(sub { @@ -76,6 +74,7 @@ if ($old) { } die "Only conversion from v1 inboxes is supported\n" if $old->version >= 2; +require File::Spec; require PublicInbox::Admin; my $detected = PublicInbox::Admin::detect_indexlevel($old); $old->{indexlevel} //= $detected; @@ -89,7 +88,7 @@ if ($opt->{'index'}) { } local %ENV = (%$env, %ENV) if $env; my $new = { %$old }; -$new->{inboxdir} = abs_path($new_dir); +$new->{inboxdir} = File::Spec->canonpath($new_dir); $new->{version} = 2; $new = PublicInbox::InboxWritable->new($new, { nproc => $opt->{jobs} }); $new->{-no_fsync} = 1 if !$opt->{fsync};