]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/LeiLsMailSync.pm
No ext_urls
[public-inbox.git] / lib / PublicInbox / LeiLsMailSync.pm
index 2b3d326d587e0cbbb4b08d1e7c88a3a142c27017..8da0c284799a81418aff2d1ef0fd58513728bffb 100644 (file)
@@ -1,7 +1,7 @@
-# Copyright (C) 2021 all contributors <meta@public-inbox.org>
+# Copyright (C) all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 
-# front-end for the "lei ls-sync" sub-command
+# front-end for the "lei ls-mail-sync" sub-command
 package PublicInbox::LeiLsMailSync;
 use strict;
 use v5.10.1;
@@ -9,12 +9,13 @@ use PublicInbox::LeiMailSync;
 
 sub lei_ls_mail_sync {
        my ($lei, $filter) = @_;
-       my $sto = $lei->_lei_store or return;
-       my $lms = $sto->search->lms or return;
+       my $lms = $lei->lms or return;
        my $opt = $lei->{opt};
-       my $re;
-       $re = defined($filter) ? qr/\Q$filter\E/ : qr/./ if $opt->{globoff};
-       $re //= $lei->glob2re($filter // '*');
+       my $re = $opt->{globoff} ? undef : $lei->glob2re($filter // '*');
+       $re .= '/?\\z' if defined $re;
+       $re //= index($filter, '/') < 0 ?
+                       qr!/\Q$filter\E/?\z! : # exact basename match
+                       qr/\Q$filter\E/; # grep -F semantics
        my @f = $lms->folders;
        @f = $opt->{'invert-match'} ? grep(!/$re/, @f) : grep(/$re/, @f);
        if ($opt->{'local'} && !$opt->{remote}) {