diff options
author | Eric Wong <e@80x24.org> | 2019-05-23 09:36:44 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2019-05-23 17:43:50 +0000 |
commit | d537fa4148134fe45595305a7398895682f43c96 (patch) | |
tree | d794074e782a42b283e42c0d18a239302e30ddf9 /lib/PublicInbox/Admin.pm | |
parent | 7e56f47848127b65979c786595244a552b164b3d (diff) | |
download | public-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.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); |