]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/LeiExternal.pm
www_coderepo: eliminate debug log footer
[public-inbox.git] / lib / PublicInbox / LeiExternal.pm
index 701d1ad53adf1c03f0302c587a9e8ff25981ba90..a6562e7f08f6d36a9b27f8c412cafbef5696aae2 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2020-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>
 
 # *-external commands of lei
@@ -88,7 +88,7 @@ sub get_externals {
        my @cur = externals_each($self);
        my $do_glob = !$self->{opt}->{globoff}; # glob by default
        if ($do_glob && (my $re = glob2re($loc))) {
-               @m = grep(m!$re!, @cur);
+               @m = grep(m!$re/?\z!, @cur);
                return @m if scalar(@m);
        } elsif (index($loc, '/') < 0) { # exact basename match:
                @m = grep(m!/\Q$loc\E/?\z!, @cur);
@@ -101,11 +101,20 @@ sub get_externals {
                return (ext_canonicalize($loc));
        }
        if (scalar(@m) == 0) {
-               $self->fail("`$loc' is unknown");
+               die "`$loc' is unknown\n";
        } else {
-               $self->fail("`$loc' is ambiguous:\n", map { "\t$_\n" } @m);
+               die("`$loc' is ambiguous:\n", map { "\t$_\n" } @m, "\n");
        }
-       ();
+}
+
+sub canonicalize_excludes {
+       my ($lei, $excludes) = @_;
+       my %x;
+       for my $loc (@$excludes) {
+               my @l = get_externals($lei, $loc, 1);
+               $x{$_} = 1 for @l;
+       }
+       \%x;
 }
 
 # returns an anonymous sub which returns an array of potential results