From: Eric Wong <e@80x24.org>
To: meta@public-inbox.org
Subject: [PATCH 3/3] lei ls-external: split into separate file
Date: Sat, 25 Sep 2021 08:49:45 +0000 [thread overview]
Message-ID: <20210925084945.15899-4-e@80x24.org> (raw)
In-Reply-To: <20210925084945.15899-1-e@80x24.org>
This was written before we had auto-loading and rarely used.
---
MANIFEST | 1 +
lib/PublicInbox/LeiExternal.pm | 26 +-------------------------
lib/PublicInbox/LeiLsExternal.pm | 32 ++++++++++++++++++++++++++++++++
3 files changed, 34 insertions(+), 25 deletions(-)
create mode 100644 lib/PublicInbox/LeiLsExternal.pm
diff --git a/MANIFEST b/MANIFEST
index 8db9cdc791bb..3e942855127f 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -230,6 +230,7 @@ lib/PublicInbox/LeiInit.pm
lib/PublicInbox/LeiInput.pm
lib/PublicInbox/LeiInspect.pm
lib/PublicInbox/LeiLcat.pm
+lib/PublicInbox/LeiLsExternal.pm
lib/PublicInbox/LeiLsLabel.pm
lib/PublicInbox/LeiLsMailSource.pm
lib/PublicInbox/LeiLsMailSync.pm
diff --git a/lib/PublicInbox/LeiExternal.pm b/lib/PublicInbox/LeiExternal.pm
index 5a54cc19281e..701d1ad53adf 100644
--- a/lib/PublicInbox/LeiExternal.pm
+++ b/lib/PublicInbox/LeiExternal.pm
@@ -50,7 +50,7 @@ my %re_map = ( '*' => '[^/]*?', '?' => '[^/]',
'[' => '[', ']' => ']', ',' => ',' );
sub glob2re {
- my $re = $_[-1];
+ my $re = $_[-1]; # $_[0] may be $lei
my $p = '';
my $in_bracket = 0;
my $qm = 0;
@@ -108,30 +108,6 @@ sub get_externals {
();
}
-# TODO: does this need JSON output?
-sub lei_ls_external {
- my ($self, $filter) = @_;
- my $opt = $self->{opt};
- my $do_glob = !$opt->{globoff}; # glob by default
- my ($OFS, $ORS) = $opt->{z} ? ("\0", "\0\0") : (" ", "\n");
- $filter //= '*';
- my $re = $do_glob ? glob2re($filter) : undef;
- $re //= index($filter, '/') < 0 ?
- qr!/\Q$filter\E/?\z! : # exact basename match
- qr/\Q$filter\E/; # grep -F semantics
- my @ext = externals_each($self, my $boost = {});
- @ext = $opt->{'invert-match'} ? grep(!/$re/, @ext)
- : grep(/$re/, @ext);
- if ($opt->{'local'} && !$opt->{remote}) {
- @ext = grep(!m!\A[a-z\+]+://!, @ext);
- } elsif ($opt->{remote} && !$opt->{'local'}) {
- @ext = grep(m!\A[a-z\+]+://!, @ext);
- }
- for my $loc (@ext) {
- $self->out($loc, $OFS, 'boost=', $boost->{$loc}, $ORS);
- }
-}
-
# returns an anonymous sub which returns an array of potential results
sub complete_url_prepare {
my $argv = $_[-1]; # $_[0] may be $lei
diff --git a/lib/PublicInbox/LeiLsExternal.pm b/lib/PublicInbox/LeiLsExternal.pm
new file mode 100644
index 000000000000..dd2eb2e7d16e
--- /dev/null
+++ b/lib/PublicInbox/LeiLsExternal.pm
@@ -0,0 +1,32 @@
+# Copyright (C) all contributors <meta@public-inbox.org>
+# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
+
+# "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;
prev parent reply other threads:[~2021-09-25 8:49 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-25 8:49 [PATCH 0/3] lei *-external: split off into separate files Eric Wong
2021-09-25 8:49 ` [PATCH 1/3] lei forget-external: split into separate file Eric Wong
2021-09-25 8:49 ` [PATCH 2/3] lei add-external: " Eric Wong
2021-09-25 8:49 ` Eric Wong [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://public-inbox.org/README
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210925084945.15899-4-e@80x24.org \
--to=e@80x24.org \
--cc=meta@public-inbox.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/public-inbox.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).