diff options
Diffstat (limited to 'lib/PublicInbox/LEI.pm')
-rw-r--r-- | lib/PublicInbox/LEI.pm | 22 |
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); |