From 40a52db17d468ab81d19d55333e390ab6e4ceedc Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sat, 25 Sep 2021 08:49:45 +0000 Subject: lei ls-external: split into separate file This was written before we had auto-loading and rarely used. --- lib/PublicInbox/LeiLsExternal.pm | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 lib/PublicInbox/LeiLsExternal.pm (limited to 'lib/PublicInbox/LeiLsExternal.pm') diff --git a/lib/PublicInbox/LeiLsExternal.pm b/lib/PublicInbox/LeiLsExternal.pm new file mode 100644 index 00000000..dd2eb2e7 --- /dev/null +++ b/lib/PublicInbox/LeiLsExternal.pm @@ -0,0 +1,32 @@ +# Copyright (C) all contributors +# License: AGPL-3.0+ + +# "lei ls-external" command +package PublicInbox::LeiLsExternal; +use strict; +use v5.10.1; + +# TODO: does this need JSON output? +sub lei_ls_external { + my ($lei, $filter) = @_; + my $do_glob = !$lei->{opt}->{globoff}; # glob by default + my ($OFS, $ORS) = $lei->{opt}->{z} ? ("\0", "\0\0") : (" ", "\n"); + $filter //= '*'; + my $re = $do_glob ? $lei->glob2re($filter) : undef; + $re //= index($filter, '/') < 0 ? + qr!/\Q$filter\E/?\z! : # exact basename match + qr/\Q$filter\E/; # grep -F semantics + my @ext = $lei->externals_each(my $boost = {}); + @ext = $lei->{opt}->{'invert-match'} ? grep(!/$re/, @ext) + : grep(/$re/, @ext); + if ($lei->{opt}->{'local'} && !$lei->{opt}->{remote}) { + @ext = grep(!m!\A[a-z\+]+://!, @ext); + } elsif ($lei->{opt}->{remote} && !$lei->{opt}->{'local'}) { + @ext = grep(m!\A[a-z\+]+://!, @ext); + } + for my $loc (@ext) { + $lei->out($loc, $OFS, 'boost=', $boost->{$loc}, $ORS); + } +} + +1; -- cgit v1.2.3-24-ge0c7