]> Sergey Matveev's repositories - public-inbox.git/commitdiff
use PublicInbox::Config::each_inbox where appropriate
authorEric Wong <e@80x24.org>
Tue, 1 Jan 2019 10:18:46 +0000 (10:18 +0000)
committerEric Wong <e@80x24.org>
Wed, 2 Jan 2019 08:33:35 +0000 (08:33 +0000)
No need to reach into PublicInbox::Config internals and iterate
through the hashref by hand

lib/PublicInbox/WatchMaildir.pm
script/public-inbox-index

index 13dea168deb8d5e3a0e4604dd5694f4a865370d6..b558cda1875843682f24a04443d5b4fefa7d0c6b 100644 (file)
@@ -45,30 +45,27 @@ sub new {
        my $spamcheck = PublicInbox::Spamcheck::get($config, $k, $default);
        $spamcheck = _spamcheck_cb($spamcheck) if $spamcheck;
 
-       # need to make all inboxes writable for spam removal:
-       $config->each_inbox(sub { PublicInbox::InboxWritable->new($_[0]) });
+       $config->each_inbox(sub {
+               # need to make all inboxes writable for spam removal:
+               my $ibx = $_[0] = PublicInbox::InboxWritable->new($_[0]);
 
-       foreach $k (keys %$config) {
-               $k =~ /\Apublicinbox\.([^\.]+)\.watch\z/ or next;
-               my $name = $1;
-               my $watch = $config->{$k};
+               my $watch = $ibx->{watch} or return;
                if ($watch =~ s/\Amaildir://) {
                        $watch =~ s!/+\z!!;
-                       my $inbox = $config->lookup_name($name);
-                       if (my $wm = $inbox->{watchheader}) {
+                       if (my $wm = $ibx->{watchheader}) {
                                my ($k, $v) = split(/:/, $wm, 2);
-                               $inbox->{-watchheader} = [ $k, qr/\Q$v\E/ ];
+                               $ibx->{-watchheader} = [ $k, qr/\Q$v\E/ ];
                        }
                        my $new = "$watch/new";
                        my $cur = "$watch/cur";
                        push @mdir, $new, $cur;
                        die "$new already in use\n" if $mdmap{$new};
                        die "$cur already in use\n" if $mdmap{$cur};
-                       $mdmap{$new} = $mdmap{$cur} = $inbox;
+                       $mdmap{$new} = $mdmap{$cur} = $ibx;
                } else {
                        warn "watch unsupported: $k=$watch\n";
                }
-       }
+       });
        return unless @mdir;
 
        my $mdre = join('|', map { quotemeta($_) } @mdir);
index e487e3fe327f69080e29996bb934a3cd219f46f8..73ad9bc4a1c08926f83ccfcde1857f863952e1ee 100755 (executable)
@@ -73,16 +73,14 @@ if (@ARGV) {
 sub usage { print STDERR "Usage: $usage\n"; exit 1 }
 usage() unless @dirs;
 
-foreach my $k (keys %$config) {
-       $k =~ /\Apublicinbox\.([^\.]+)\.mainrepo\z/ or next;
-       my $name = $1;
-       my $v = $config->{$k};
+$config->each_inbox(sub {
+       my ($ibx) = @_;
+
        for my $i (0..$#dirs) {
-               next if $dirs[$i] ne $v;
-               my $ibx = $config->lookup_name($name);
-               $dirs[$i] = $ibx if $ibx;
+               next if $dirs[$i] ne $ibx->{mainrepo};
+               $dirs[$i] = $ibx;
        }
-}
+});
 
 foreach my $dir (@dirs) {
        if (!ref($dir) && -f "$dir/inbox.lock") { # v2