about summary refs log tree commit homepage
path: root/lib/PublicInbox/Admin.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2020-10-13 01:34:30 +0000
committerEric Wong <e@80x24.org>2020-10-13 07:15:14 +0000
commit8080720d242f7450ecaf7e962c0f4ac9c5c2115b (patch)
tree66e4c4dfdc9aa1fc8e6ed5f8f9fb4b43080b7570 /lib/PublicInbox/Admin.pm
parent4c10137458c95adf45babd388c639c1344b62211 (diff)
downloadpublic-inbox-8080720d242f7450ecaf7e962c0f4ac9c5c2115b.tar.gz
When `--all' is passed to -index and similar commands, process
them in the same order as what is given in the config file.
This ensures predictable behavior so admins can ensure certain
inboxes see updated indices before others.  For (upcoming)
external indices, this will ensure stable Xref: ordering for
predictable caching/memoization by NNTP clients.
Diffstat (limited to 'lib/PublicInbox/Admin.pm')
-rw-r--r--lib/PublicInbox/Admin.pm9
1 files changed, 5 insertions, 4 deletions
diff --git a/lib/PublicInbox/Admin.pm b/lib/PublicInbox/Admin.pm
index fb88e621..9d48e5eb 100644
--- a/lib/PublicInbox/Admin.pm
+++ b/lib/PublicInbox/Admin.pm
@@ -97,12 +97,14 @@ sub resolve_inboxes ($;$$) {
         my $min_ver = $opt->{-min_inbox_version} || 0;
         my (@old, @ibxs);
         my %dir2ibx;
+        my $all = $opt->{all} ? [] : undef;
         if ($cfg) {
                 $cfg->each_inbox(sub {
                         my ($ibx) = @_;
                         my $path = abs_path($ibx->{inboxdir});
                         if (defined($path)) {
                                 $dir2ibx{$path} = $ibx;
+                                push @$all, $ibx if $all;
                         } else {
                                 warn <<EOF;
 W: $ibx->{name} $ibx->{inboxdir}: $!
@@ -110,10 +112,9 @@ EOF
                         }
                 });
         }
-        if ($opt->{all}) {
-                my @all = values %dir2ibx;
-                @all = grep { $_->version >= $min_ver } @all;
-                push @ibxs, @all;
+        if ($all) {
+                @$all = grep { $_->version >= $min_ver } @$all;
+                @ibxs = @$all;
         } else { # directories specified on the command-line
                 my $i = 0;
                 my @dirs = @$argv;