about summary refs log tree commit homepage
path: root/lib/PublicInbox/LEI.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/PublicInbox/LEI.pm')
-rw-r--r--lib/PublicInbox/LEI.pm22
1 files changed, 6 insertions, 16 deletions
diff --git a/lib/PublicInbox/LEI.pm b/lib/PublicInbox/LEI.pm
index bf97a680..b6d21af6 100644
--- a/lib/PublicInbox/LEI.pm
+++ b/lib/PublicInbox/LEI.pm
@@ -598,7 +598,12 @@ sub dispatch {
         }
         my $func = "lei_$cmd";
         $func =~ tr/-/_/;
-        if (my $cb = __PACKAGE__->can($func)) {
+        my $cb = __PACKAGE__->can($func) // ($CMD{$cmd} ? do {
+                my $mod = "PublicInbox::Lei\u$cmd";
+                ($INC{"PublicInbox/Lei\u$cmd.pm"} //
+                        eval("require $mod")) ? $mod->can($func) : undef;
+        } : undef);
+        if ($cb) {
                 optparse($self, $cmd, \@argv) or return;
                 if (my $chdir = $self->{opt}->{C}) {
                         for my $d (@$chdir) {
@@ -685,21 +690,6 @@ sub lei_config {
         x_it($self, $?) if $?;
 }
 
-sub lei_import {
-        require PublicInbox::LeiImport;
-        PublicInbox::LeiImport->call(@_);
-}
-
-sub lei_convert {
-        require PublicInbox::LeiConvert;
-        PublicInbox::LeiConvert->call(@_);
-}
-
-sub lei_p2q {
-        require PublicInbox::LeiP2q;
-        PublicInbox::LeiP2q->call(@_);
-}
-
 sub lei_init {
         my ($self, $dir) = @_;
         my $cfg = _lei_cfg($self, 1);