App-AcmeCpanauthors
view release on metacpan or search on metacpan
lib/App/AcmeCpanauthors.pm view on Meta::CPAN
my $detail = $args{detail};
my $module = $args{module};
if ($action eq 'list_installed') {
my @res;
for (@{ _list_installed() }) {
if ($detail) {
push @res, $_;
} else {
push @res, $_->{name};
}
}
[200, "OK", \@res,
{('cmdline.default_format' => 'text') x !!$detail}];
} elsif ($action eq 'list_cpan') {
my @methods = $args{lcpan} ?
('lcpan', 'metacpan') : ('metacpan', 'lcpan');
METHOD:
for my $method (@methods) {
if ($method eq 'lcpan') {
unless (eval { require App::lcpan::Call; 1 }) {
warn "App::lcpan::Call is not installed, skipped listing ".
"modules from local CPAN mirror\n";
next METHOD;
}
my $res = App::lcpan::Call::call_lcpan_script(
argv => [
qw/mods --namespace Acme::CPANAuthors/,
("-l") x !!$detail,
],
);
return $res if $res->[0] != 200;
if ($detail) {
return [200, "OK",
[grep {!_should_skip($_->{module})}
map {$_->{module} =~ s/\AAcme::CPANAuthors:://; $_}
grep {$_->{module} =~ /Acme::CPANAuthors::/} sort @{$res->[2]}]];
} else {
return [200, "OK",
[grep {!_should_skip($_)}
map {my $ac_mod = $_; $ac_mod =~ s/\AAcme::CPANAuthors:://; $ac_mod }
grep {/Acme::CPANAuthors::/} sort @{$res->[2]}]];
}
} elsif ($method eq 'metacpan') {
unless (eval { require MetaCPAN::Client; 1 }) {
warn "MetaCPAN::Client is not installed, skipped listing ".
"modules from MetaCPAN\n";
next METHOD;
}
my $mcpan = MetaCPAN::Client->new;
my $rs = $mcpan->module({
'module.name'=>'Acme::CPANAuthors::*',
});
my @res;
while (my $row = $rs->next) {
my $mod = $row->module->[0]{name};
say "D: mod=$mod" if $ENV{DEBUG};
$mod =~ s/\AAcme::CPANAuthors:://;
next if _should_skip($mod);
push @res, $mod unless grep {$mod eq $_} @res;
}
warn "Empty result from MetaCPAN\n" unless @res;
return [200, "OK", [sort @res]];
}
}
return [412, "Can't find a way to list CPAN mirrors"];
} elsif ($action eq 'list_ids') {
return [400, "Please specify module"] unless $module;
require Acme::CPANAuthors;
my $authors = Acme::CPANAuthors->new($module);
[200, "OK", [$authors->id]];
} else {
[400, "Unknown action '$action'"];
}
}
1;
# ABSTRACT: Unofficial CLI for Acme::CPANAuthors
__END__
=pod
=encoding UTF-8
=head1 NAME
App::AcmeCpanauthors - Unofficial CLI for Acme::CPANAuthors
=head1 VERSION
This document describes version 0.004 of App::AcmeCpanauthors (from Perl distribution App-AcmeCpanauthors), released on 2023-06-17.
=head1 SYNOPSIS
See the included script L<acme-cpanauthors>.
=head1 FUNCTIONS
=head2 acme_cpanauthors
Usage:
acme_cpanauthors(%args) -> [$status_code, $reason, $payload, \%result_meta]
Unofficial CLI for Acme::CPANAuthors.
Examples:
=over
( run in 3.260 seconds using v1.01-cache-2.11-cpan-5e09290becf )