App-MetaCPANUtils
view release on metacpan or search on metacpan
lib/App/MetaCPANUtils.pm view on Meta::CPAN
our %argopt_distribution_fields = (
fields => {
'x.name.is_plural' => 1,
'x.name.singular' => 'field',
schema => ['array*', of=>['str*', in=>[ map {$_->[0]} @$distribution_fields ]]],
default => [ map {$_->[0]} grep {$_->[2]} @$distribution_fields ],
cmdline_aliases=>{f=>{}},
tags => ['category:result'],
},
);
our %argopt_module_fields = (
fields => {
'x.name.is_plural' => 1,
'x.name.singular' => 'field',
schema => ['array*', of=>['str*', in=>[ map {$_->[0]} @$module_fields ]]],
default => [ map {$_->[0]} grep {$_->[2]} @$module_fields ],
cmdline_aliases=>{f=>{}},
tags => ['category:result'],
},
);
our %argopt_release_sort = (
sort => {
schema => ['str*', in=>[qw/release -release date -date/]],
default => '-date',
},
);
our %argopt_distribution_sort = (
sort => {
schema => ['str*', in=>[qw/distribution -distribution/]],
default => 'distribution',
},
);
our %argopt_module_sort = (
sort => {
schema => ['str*', in=>[qw/module -module date -date author -author/]],
default => 'module',
},
);
our %argoptf_author = (
author => {
schema => "cpan::pause_id*",
tags => ['category:filtering'],
},
);
our %argoptf_distribution = (
distribution => {
schema => "cpan::distname*",
tags => ['category:filtering'],
},
);
our %argoptf_module = (
distribution => {
schema => "cpan::modname*",
tags => ['category:filtering'],
},
);
our %argoptf_from_date = (
from_date => {
schema => ["date*", "x.perl.coerce_to" => "DateTime"],
tags => ['category:filtering'],
},
);
our %argoptf_to_date = (
to_date => {
schema => ["date*", "x.perl.coerce_to" => "DateTime"],
tags => ['category:filtering'],
},
);
our %argoptf_date = (
date => {
summary => 'Select a single day, alternative to `from_date` + `to_date`',
schema => ["date*", "x.perl.coerce_to" => "DateTime"],
tags => ['category:filtering'],
},
);
our %argoptf_release_status = (
status => {
schema => ["str*", in=>[qw/latest cpan backpan/]],
tags => ['category:filtering'],
cmdline_aliases => {
latest => {is_flag=>1, summary=>'Shortcut for --status=latest' , code=>sub { $_[0]{status} = 'latest' }},
cpan => {is_flag=>1, summary=>'Shortcut for --status=cpan' , code=>sub { $_[0]{status} = 'cpan' }},
backpan => {is_flag=>1, summary=>'Shortcut for --status=backpan', code=>sub { $_[0]{status} = 'backpan' }},
},
},
);
our %argoptf_module_status = (
status => {
%{ $argoptf_release_status{status} },
default => 'latest',
},
);
our %argoptf_first = (
first => {
schema => ["bool*"],
tags => ['category:filtering'],
},
);
sub _resultset_to_envres {
my ($resultset, $wanted_fields) = @_;
my @rows;
my $resmeta = {'table.fields' => $wanted_fields};
while (my $obj = $resultset->next) {
log_trace("API result: %s", $obj) if $ENV{METACPANUTILS_DUMP_API_RESULT};
my $row = {};
if (ref $obj eq 'MetaCPAN::Client::Release') {
$row->{release} = $obj->name if grep {$_ eq 'release'} @$wanted_fields;
$row->{date} = $obj->date if grep {$_ eq 'date'} @$wanted_fields;
$row->{author} = $obj->author if grep {$_ eq 'author'} @$wanted_fields;
$row->{maturity} = $obj->maturity if grep {$_ eq 'maturity'} @$wanted_fields;
$row->{version} = $obj->version if grep {$_ eq 'version'} @$wanted_fields;
$row->{distribution} = $obj->distribution if grep {$_ eq 'distribution'} @$wanted_fields;
$row->{abstract} = $obj->abstract if grep {$_ eq 'abstract'} @$wanted_fields;
$row->{first} = $obj->first if grep {$_ eq 'first'} @$wanted_fields;
$row->{status} = $obj->status if grep {$_ eq 'status'} @$wanted_fields;
$row->{download_url} = $obj->download_url if grep {$_ eq 'download_url'} @$wanted_fields;
} elsif (ref $obj eq 'MetaCPAN::Client::Distribution') {
$row->{distribution} = $obj->name if grep {$_ eq 'distribution'} @$wanted_fields;
} elsif (ref $obj eq 'MetaCPAN::Client::Module') {
$row->{module} = $obj->name if grep {$_ eq 'module'} @$wanted_fields; # ->package() doesn't work
$row->{date} = $obj->date if grep {$_ eq 'date'} @$wanted_fields;
$row->{author} = $obj->author if grep {$_ eq 'author'} @$wanted_fields;
$row->{maturity} = $obj->maturity if grep {$_ eq 'maturity'} @$wanted_fields;
$row->{version} = $obj->version if grep {$_ eq 'version'} @$wanted_fields;
$row->{release} = $obj->release if grep {$_ eq 'release'} @$wanted_fields;
$row->{abstract} = $obj->abstract if grep {$_ eq 'abstract'} @$wanted_fields;
$row->{status} = $obj->status if grep {$_ eq 'status'} @$wanted_fields;
} else {
die "Can't handle result $obj";
}
( run in 0.911 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )