diff options
Diffstat (limited to 'lib/PublicInbox/Admin.pm')
-rw-r--r-- | lib/PublicInbox/Admin.pm | 34 |
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); |