CPAN-Local
view release on metacpan or search on metacpan
lib/CPAN/Local/Plugin/PackagesDetails.pm view on Meta::CPAN
package CPAN::Local::Plugin::PackagesDetails;
{
$CPAN::Local::Plugin::PackagesDetails::VERSION = '0.010';
}
# ABSTRACT: Update 02packages.details.txt
use strict;
use warnings;
use CPAN::Index::API::File::PackagesDetails;
use CPAN::DistnameInfo;
use Path::Class qw(file dir);
use URI::file;
use Perl::Version;
use namespace::autoclean;
use Moose;
extends 'CPAN::Local::Plugin';
with qw(CPAN::Local::Role::Initialise CPAN::Local::Role::Index);
has 'repo_uri' =>
(
is => 'ro',
isa => 'Str',
);
has 'root' =>
(
is => 'ro',
isa => 'Str',
required => 1,
);
has 'auto_provides' =>
(
is => 'ro',
isa => 'Bool',
);
has 'no_update' =>
(
is => 'ro',
isa => 'Bool',
);
sub initialise
{
my $self = shift;
dir($self->root)->mkpath;
my $packages_details = CPAN::Index::API::File::PackagesDetails->new(
repo_path => $self->root,
$self->repo_uri ? ( repo_uri => $self->repo_uri ) : (),
);
$packages_details->write_to_tarball;
}
sub index
{
my ($self, @distros) = @_;
return if $self->no_update;
my $packages_details =
CPAN::Index::API::File::PackagesDetails->read_from_repo_path($self->root);
foreach my $distro ( @distros )
{
my %provides = %{ $distro->metadata->provides };
if ( ! %provides and $self->auto_provides )
{
my $distnameinfo = CPAN::DistnameInfo->new(
file($distro->filename)->basename
( run in 0.707 second using v1.01-cache-2.11-cpan-f56aa216473 )