about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2019-05-28 23:48:52 +0000
committerEric Wong <e@80x24.org>2019-05-29 08:05:47 +0000
commitde1a674545481c779bc49feef028eacc1e181d5d (patch)
tree4beb336b63bf7c69db3ca4285824002866ae36ba
parentbc76942dee09114695b276b45dd9221cd651defb (diff)
downloadpublic-inbox-de1a674545481c779bc49feef028eacc1e181d5d.tar.gz
It doesn't implement progress of batches, yet, but it wires
up the parsing of the command-line while preserving output
compatibility.

This output is NOT meant to be stable.
-rw-r--r--lib/PublicInbox/Admin.pm18
-rw-r--r--lib/PublicInbox/Xapcmd.pm14
-rwxr-xr-xscript/public-inbox-index5
3 files changed, 22 insertions, 15 deletions
diff --git a/lib/PublicInbox/Admin.pm b/lib/PublicInbox/Admin.pm
index 34aa3129..07d8b572 100644
--- a/lib/PublicInbox/Admin.pm
+++ b/lib/PublicInbox/Admin.pm
@@ -167,4 +167,22 @@ sub index_inbox {
         }
 }
 
+sub progress_prepare ($) {
+        my ($opt) = @_;
+
+        # public-inbox-index defaults to quiet, -xcpdb and -compact do not
+        if (defined($opt->{quiet}) && $opt->{quiet} < 0) {
+                $opt->{quiet} = !$opt->{verbose};
+        }
+        if ($opt->{quiet}) {
+                open my $null, '>', '/dev/null' or
+                        die "failed to open /dev/null: $!\n";
+                $opt->{1} = fileno($null); # suitable for spawn() redirect
+                $opt->{-dev_null} = $null;
+        } else {
+                $opt->{verbose} ||= 1;
+                $opt->{-progress} = sub { print STDERR @_ };
+        }
+}
+
 1;
diff --git a/lib/PublicInbox/Xapcmd.pm b/lib/PublicInbox/Xapcmd.pm
index 999819c7..7e3d47fb 100644
--- a/lib/PublicInbox/Xapcmd.pm
+++ b/lib/PublicInbox/Xapcmd.pm
@@ -86,18 +86,6 @@ sub prepare_reindex ($$) {
         }
 }
 
-sub progress_prepare ($) {
-        my ($opt) = @_;
-        if ($opt->{quiet}) {
-                open my $null, '>', '/dev/null' or
-                        die "failed to open /dev/null: $!\n";
-                $opt->{1} = fileno($null);
-                $opt->{-dev_null} = $null;
-        } else {
-                $opt->{-progress} = sub { print STDERR @_ };
-        }
-}
-
 sub same_fs_or_die ($$) {
         my ($x, $y) = @_;
         return if ((stat($x))[0] == (stat($y))[0]); # 0 - st_dev
@@ -132,7 +120,7 @@ sub process_queue {
 sub run {
         my ($ibx, $task, $opt) = @_; # task = 'cpdb' or 'compact'
         my $cb = \&${\"PublicInbox::Xapcmd::$task"};
-        progress_prepare($opt ||= {});
+        PublicInbox::Admin::progress_prepare($opt ||= {});
         my $dir = $ibx->{mainrepo} or die "no mainrepo in inbox\n";
         runnable_or_die($XAPIAN_COMPACT) if $opt->{compact};
         my $reindex; # v1:{ from => $x40 }, v2:{ from => [ $x40, $x40, .. ] } }
diff --git a/script/public-inbox-index b/script/public-inbox-index
index 40187b35..c0d637b1 100755
--- a/script/public-inbox-index
+++ b/script/public-inbox-index
@@ -13,8 +13,8 @@ my $usage = "public-inbox-index INBOX_DIR";
 use PublicInbox::Admin;
 PublicInbox::Admin::require_or_die('-index');
 
-my $opt = {};
-GetOptions($opt, qw(reindex jobs|j=i prune indexlevel|L=s))
+my $opt = { quiet => -1 };
+GetOptions($opt, qw(verbose|v+ reindex jobs|j=i prune indexlevel|L=s))
         or die "bad command-line args\n$usage";
 die "--jobs must be positive\n" if defined $opt->{jobs} && $opt->{jobs} <= 0;
 
@@ -35,4 +35,5 @@ foreach my $ibx (@ibxs) {
 }
 
 PublicInbox::Admin::require_or_die(keys %$mods);
+PublicInbox::Admin::progress_prepare($opt);
 PublicInbox::Admin::index_inbox($_, $opt) for @ibxs;