about summary refs log tree commit homepage
path: root/lib/PublicInbox/Admin.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2019-05-23 09:36:44 +0000
committerEric Wong <e@80x24.org>2019-05-23 17:43:50 +0000
commitd537fa4148134fe45595305a7398895682f43c96 (patch)
treed794074e782a42b283e42c0d18a239302e30ddf9 /lib/PublicInbox/Admin.pm
parent7e56f47848127b65979c786595244a552b164b3d (diff)
downloadpublic-inbox-d537fa4148134fe45595305a7398895682f43c96.tar.gz
Both of these index-affecting commands should work similarly
on the command-line.

public-inbox-index no longer complains about unconfigured
~/.public-inbox/config; but often I found myself being
annoyed by that, anyways...
Diffstat (limited to 'lib/PublicInbox/Admin.pm')
-rw-r--r--lib/PublicInbox/Admin.pm34
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/PublicInbox/Admin.pm b/lib/PublicInbox/Admin.pm
index 3eff5cde..27848209 100644
--- a/lib/PublicInbox/Admin.pm
+++ b/lib/PublicInbox/Admin.pm
@@ -41,6 +41,40 @@ sub resolve_repo_dir {
         }
 }
 
+sub resolve_inboxes {
+        my ($argv, $warn_on_unconfigured) = @_;
+        require PublicInbox::Config;
+        require PublicInbox::Inbox;
+
+        my @ibxs = map { resolve_repo_dir($_) } @$argv;
+        push(@ibxs, resolve_repo_dir()) unless @ibxs;
+
+        my %dir2ibx;
+        if (my $config = eval { PublicInbox::Config->new }) {
+                $config->each_inbox(sub {
+                        my ($ibx) = @_;
+                        $dir2ibx{abs_path($ibx->{mainrepo})} = $ibx;
+                });
+        } elsif ($warn_on_unconfigured) {
+                # do we really care about this?  It's annoying...
+                warn $warn_on_unconfigured, "\n";
+        }
+        for my $i (0..$#ibxs) {
+                my $dir = $ibxs[$i];
+                $ibxs[$i] = $dir2ibx{$dir} ||= do {
+                        my $name = "unconfigured-$i";
+                        PublicInbox::Inbox->new({
+                                name => $name,
+                                address => [ "$name\@example.com" ],
+                                mainrepo => $dir,
+                                # TODO: consumers may want to warn on this:
+                                #-unconfigured => 1,
+                        });
+                };
+        }
+        @ibxs;
+}
+
 # TODO: make Devel::Peek optional, only used for daemon
 my @base_mod = qw(Email::MIME Date::Parse Devel::Peek);
 my @over_mod = qw(DBD::SQLite DBI);