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.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);