about summary refs log tree commit homepage
path: root/lib/PublicInbox/Admin.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/PublicInbox/Admin.pm')
-rw-r--r--lib/PublicInbox/Admin.pm25
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/PublicInbox/Admin.pm b/lib/PublicInbox/Admin.pm
index 07d8b572..4a862c6d 100644
--- a/lib/PublicInbox/Admin.pm
+++ b/lib/PublicInbox/Admin.pm
@@ -41,6 +41,31 @@ sub resolve_repo_dir {
         }
 }
 
+# for unconfigured inboxes
+sub detect_indexlevel ($) {
+        my ($ibx) = @_;
+
+        # brand new or never before indexed inboxes default to full
+        return 'full' unless $ibx->over;
+        delete $ibx->{over}; # don't leave open FD lying around
+
+        my $l = 'basic';
+        my $srch = $ibx->search or return $l;
+        delete $ibx->{search}; # don't leave open FD lying around
+        if (my $xdb = $srch->xdb) {
+                $l = 'full';
+                my $m = $xdb->get_metadata('indexlevel');
+                if ($m eq 'medium') {
+                        $l = $m;
+                } elsif ($m ne '') {
+                        warn <<"";
+$ibx->{mainrepo} has unexpected indexlevel in Xapian: $m
+
+                }
+        }
+        $l;
+}
+
 sub resolve_inboxes {
         my ($argv, $warn_on_unconfigured) = @_;
         require PublicInbox::Config;